검색
검색
AI news 검색
Sign UpLogin

TypeScript에서 코사인 유사도 함수를 구현하는 방법

  • 기사 제목: TypeScript로 코사인 유사성 함수 구현하기
  • 코사인 유사성: 두 벡터의 방향 유사성을 측정, 크기는 무시
  • 계산 방법:
    1. 벡터의 각 요소를 곱하고 합산(내적)
    2. 각 벡터의 크기를 계산
    3. 내적을 크기의 곱으로 나누기
  • 결과:
    • 1: 같은 방향 (완전 유사)
    • 0: 수직 (무관)
    • -1: 반대 방향 (완전 비유사)
  • 장점: 크기를 무시하고 방향만 비교, 다른 길이의 문서도 유사할 수 있음
  • AI 응용: 단어, 문서, 이미지 등 벡터 변환 -> 코사인 유사성으로 관련 항목 찾기
  • TypeScript 구현 예제:
    function cosineSimilarity(vecA: number[], vecB: number[]): number {
      if (vecA.length !== vecB.length) {
        throw new Error("Vectors must have the same dimensions");
      }
      const dotProduct = vecA.reduce((sum, a, i) => sum + a * vecB[i], 0);
      const magnitudeA = Math.hypot(...vecA);
      const magnitudeB = Math.hypot(...vecB);
      if (magnitudeA === 0 || magnitudeB === 0) return 0;
      return dotProduct / (magnitudeA * magnitudeB);
    }
    
  • 실례 벡터 테스트:
    • 비슷한 벡터: 유사성 0.857
    • 수직 벡터: 유사성 0.000
    • 반대 벡터: 유사성 -1.000
  • 고급 AI 응용: OpenAI 임베딩 모델 사용 예시
    async function compareTextSimilarity(textA: string, textB: string): Promise<number> {
      const responseA = await fetch('https://api.openai.com/v1/embeddings', {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({ model: 'text-embedding-3-large', input: textA })
      });
      const responseB = await fetch('https://api.openai.com/v1/embeddings', {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${process.env.OPENAI_API_KEY}`,
          'Content-Type': 'application/json',
        },
        body: JSON.stringify({ model: 'text-embedding-3-large', input: textB })
      });
      const embeddingA = (await responseA.json()).data[0].embedding;
      const embeddingB = (await responseB.json()).data[0].embedding;
      return VectorUtils.cosineSimilarity(embeddingA, embeddingB);
    }
    
  • 결론: 코사인 유사성 이해와 구현은 현대 AI 기능, 추천 시스템, 의미 검색, 콘텐츠 매칭 등 구현에 필수적인 도구.

3alexop.dev링크 복사하기
AI 뉴스 요약은 뉴스의 내용을 AI가 요약(GPT-4 활용)한 것입니다. 따라서 틀린 내용을 포함할 수 있습니다. 뉴스의 자세한 내용을 확인하시려면 해당 뉴스 링크를 클릭해주세요.
원본 뉴스 보기