RAG 및 GPT에 대한 의미론적 검색
RAG(검색 증강 생성)란 무엇이며 GPT 빌더에게 왜 중요한가요?
RAG는 데이터 소스에서 관련 상황 정보를 검색하고 해당 정보를 사용자 프롬프트와 함께 대규모 언어 모델에 전달하는 프로세스입니다. 이 정보는 모델의 기본 지식을 강화하여 모델의 출력(생성된 텍스트 또는 이미지)을 개선하는 데 사용됩니다.
RAG는 모델이 학습한 정보에 포함되지 않은 지식이 모델에 필요한 사용 사례에 유용합니다. 예를 들어 지원팀이 고객 문의에 답변할 수 있도록 GPT를 구축한다고 가정해 보겠습니다. GPT-4는 기본 지식을 사용하여 고객 문제에 대해 추론할 수 있지만 특정 제품이나 서비스에 대한 최신 사실을 알 수는 없습니다. 유사한 문제와 관련된 과거 티켓을 검색하고 해당 컨텍스트를 사용하여 보다 관련성 높은 답변을 생성할 수 있도록 티켓팅 시스템에 GPT 액세스 권한을 부여하면 훨씬 더 나은 결과를 얻을 수 있습니다. GPT에서 지식 검색 기능을 사용하면 RAG가 자동으로 수행됩니다.
의미 검색이란 무엇입니까?
의미론적 검색은 키워드 검색(검색 입력에서 특정 색인 단어의 발생에 의존)을 넘어 입력 문자열의 개념적 유사성을 기반으로 문맥상 관련 있는 데이터를 찾습니다.
DataSource | Search Method |
---|---|
문서 관리 시스템(Google Drive, Sharepoint 등) | 키워드 검색, 사용자 정의 쿼리 문자열 |
관계형 데이터베이스(Postgres, MySQL 등) | SQL 쿼리 |
벡터 데이터베이스 | 의미 검색어 |
결과적으로 GPT-4와 같은 모델에 더 많은 컨텍스트를 제공하는 데 좋은 선택이었습니다(쿼리는 컨텍스트에 크게 의존할 가능성이 높기 때문). 의미론적 검색은 텍스트 청크(일부 문서에서 파생됨)와 해당 벡터(텍스트의 수학적 표현)를 저장하는 벡터 데이터베이스를 사용합니다. 벡터 데이터베이스를 쿼리하면 검색 입력(벡터 형식)이 저장된 모든 벡터와 비교되어 가장 유사한 텍스트 청크가 반환됩니다.
의미 검색의 예 고객 지원 챗봇을 구축한다고 가정해 보겠습니다. 지식 베이스의 기사로 벡터 데이터베이스를 채우려면 다음을 수행할 수 있습니다.
- 각 기사를 덩어리로 나눕니다.
- 이는 문장, 단락 또는 페이지 수준일 수 있습니다. 서로 다른 청킹 전략은 서로 다른 결과를 낳습니다.
- OpenAI Embedding API를 사용하여 해당 청크를 처리하고 임베딩(예: 벡터 공간에서 청크의 특성에 대한 수학적 표현)을 반환합니다.
- For example: [ -0.006929283495992422,-0.005336422007530928, … -4.547132266452536e-05, -0.024047505110502243]
- 청크와 해당 임베딩을 데이터베이스에 저장
사용자가 챗봇에게 질문을 하면 의미론적 검색이 수행됩니다.
- 사용자가 “OpenAI API를 어떻게 사용할 수 있나요?”와 같은 쿼리를 제출합니다.
- OpenAI Embedding API를 사용하여 쿼리 문자열의 벡터 표현 생성
- 내 벡터 DB와 관련된 검색 엔드포인트에 해당 벡터를 제출합니다.
- 내 쿼리와 유사한 하나 이상의 텍스트 청크를 다시 가져옵니다.
그런 다음 챗봇 애플리케이션은 초기 사용자 프롬프트와 함께 텍스트 청크를 OpenAI Chat Completions API에 제출하여 응답을 받습니다.
GPT 빌더의 경우 파일을 업로드하고 GPT에서 지식 검색을 활성화하여 즉시 의미 체계 검색을 활용할 수 있습니다.
출처 : https://help.openai.com/en/articles/8868588-retrieval-augmented-generation-rag-and-semantic-search-for-gpts