embedding 6

벡터 임베딩에서 단어간의 유사도를 판단하는 원리

조대협 (http://bcho.tistory.com) 자연어 처리(NLP)의 핵심 기술 중 하나인 단어 임베딩(Word Embedding), 그 중에서도 단어 간 유사도를 어떻게 파악하는지 그 원리를 깊이 있게 파헤쳐 보려고 한다.혹시 컴퓨터가 어떻게 단어의 의미를 이해하고, "고양이"와 "강아지"가 유사한 단어라는 것을 알아차리는지 궁금한 적 없는가? 그 비밀은 바로 단어 임베딩에 있다! 핵심 원리: "비슷한 동네에 사는 단어는 비슷한 친구다!"단어 임베딩의 핵심 아이디어는 아주 직관적이다. 바로 **"유사한 맥락에서 등장하는 단어는 유사한 의미를 가진다"**는 분포 가설(Distributional Hypothesis) 에 기반을 두고 있다. 쉽게 말해, 비슷한 문맥에서 자주 함께 등장하는 단어들은 의..

RAG 성능 튜닝 - Embedding fine tuning

다른 아이디어로는 Embedding 모델을 파인튜닝 하는 방법이 있다. OSS 나 클라우드 제공 Embedding 모델은 범용 목적에 맞춰져 있기 때문에, 특정 서비스의 단어 도메인과 맞지 않는 경우가 많다. 그래서, 이를 그 도메인의 단어로 파인튜닝하게 되면 Embedding된 결과를 통해서 유사 문서 (질문에 대한 답변)을 찾는 정확도가 향상되기 때문에 결과적으로 RAG의 성능을 향상 시킬 수 있다.  구글의 경우 Gecko Embedding 모델에 대한 파인 튜닝을 지원한다. https://cloud.google.com/vertex-ai/generative-ai/docs/models/tune-embeddings 텍스트 임베딩 조정  |  Generative AI on Vertex AI  |  Goo..

ChatGPT에 텍스트 검색을 통합하는 RAG와 벡터 데이터 베이스 Pinecone #8 임베딩 API 비교

임베딩 API 비교 및 선택 조대협 (http://bcho.tistory.com) 이 글에서는 접근이 쉽고 많이 사용되는 open ai의 임베딩 모델을 사용했지만, 여러 임베딩 모델들이 있고, 임베딩 모델 마다 성능이 다르며 임베딩의 목적또한 다르다. RAG 를 소개하는 글이기 때문에, 문서 검색 (Document Retrieval) 기능이 주요 유스 케이스이지만, 임베딩은 분류(Classification), 클러스터링(Clustering) 등 다양한 시나리오로 사용이 가능하다. 구글의 Vertex.AI 임베딩 모델의 경우, 임베딩의 목적에 따라서 임베딩 타입을 지정하게 할 수 있다. 출처 : https://cloud.google.com/vertex-ai/docs/generative-ai/embeddin..

ChatGPT에 텍스트 검색을 통합하는 RAG와 벡터 데이터 베이스 Pinecone #6 임베딩을 위한 효과적 문장 분리 방법

임베딩을 위한 효과적 문장 분리 방법 조대협(http://bcho.tistory.com) 임베딩에서 알고리즘도 중요하지만 가장 중요한 것중 하나는 어떻게 문서를 파편으로 잘라낼것인가? (이를 영어로 Chunking이라고 한다.) 이다. 임베딩은 텍스트를 고정된 크기의 벡터로 변경하는 것이기 때문에, 긴 문단을 작은 벡터로 임베딩하게 되면 디테일한 의미를 잃어버릴 수 있고, 반대로 작은 문장으로 임베딩을 하면, 검색시 문장에 대한 정확도는 올라가겠지만, 문장이 짧아서 문장 자체가 가지고 있는 정보가 부족하게 된다. 그래서 적절한 Chunk 사이즈를 찾아내는 방법이 중요한데, 이를 Chunking strategy (문서 파편화 전략)이라고 한다. 이 글에서는 몇가지 대표적인 Chunking 방식과, 같이 활..

ChatGPT에 텍스트 검색을 통합하는 RAG와 벡터 데이터 베이스 Pinecone #4 텍스트 임베딩하기

OpenAI Embedding 모델을 이용하여 텍스트 임베딩 하기 조대협 (http://bcho.tistory.com) 앞의 글에서 Pinecone 데이터베이스를 이용하여 벡터 데이터를 어떻게 저장하는지 알아보았다. 그러면 텍스트나 이미지와 같은 데이터를 어떻게 벡터데이터로 변환하는 지를 알아보도록 하겠다. 이렇게 원본 데이터를 벡터로 변환하는 과정을 임베딩이라고 한다. 임베딩의 개념과 임베딩된 데이터에 대한 검색 방법은 https://bcho.tistory.com/1400 글을 참고하기 바란다. 데이터를 임베딩하는 방법은 간단하게 API를 사용하면 되는데, OpenAI의 경우 다양한 임베딩 API 를 제공한다. 1 세대 모델은 다음과 같다. 요즘은 “text-embedding-ada-002” 모델을 주..

ChatGPT에 텍스트 검색을 통합하는 RAG와 벡터 데이터 베이스 Pinecone #2 - 임베딩과 유사도 검색

ChatGPT에 텍스트 검색을 통합하는 RAG와 벡터 데이터 베이스 Pinecone #2 - 임베딩과 유사도 검색 조대협 (http://bcho.tistory.com) 앞의 글에서 RAG가 어떻게 작동하는지에 대한 대략적인 개념에 대해서 살펴보았다. 이 글에서는 벡터데이터 베이스가 유사한 문서를 찾아내는 방법인 유사도 검색과, 텍스트등의 데이터를 이 벡터 공간으로 맵핑 시키는 임베딩의 개념에 대해서 알아보도록 한다. 임베딩의 개념 Pinecone 데이터베이스를 이해하기 위해서는 먼저 임베딩이라는 개념을 이해해야 한다. 텍스트를 그냥 데이터 베이스에 저장하는 것이 아니라, 벡터로 바꿔서 저장하는데, 단순하게 해시와 같은 방법으로 맵핑을 하는 것이 아니라 벡터 공간에 의미를 담은 상태로 변환하는 것을 임베딩..