본문 바로가기
🤖 AI/AI

🦜langchain - RAG 정리

by 정람지 2024. 5. 10.
 

Retrieval | 🦜️🔗 LangChain

Many LLM applications require user-specific data that is not part of the model's training set.

python.langchain.com


LLM applications require user-specific data that is not part of the model's training set.
=> Retrieval Augmented Generation (RAG)

https://python.langchain.com/v0.1/docs/modules/data_connection/

 

 

랭체인에서 RAG를 하기 위한 요소들

 

🦜Document loaders

다양한 출처에서 문서(user-specific data)를 로드

- 100개가 넘는 다양한 문서 로더 보유

- LangChain은 모든 유형의 문서(HTML, PDF, 코드)를 모든 유형의 위치(개인 S3 버킷, 공개 웹사이트)에서 로드할 수 있는 통합을 제공

 

🦜Text Splitting

큰 문서를 더 작은 조각으로 분할(또는 청킹)하는 것

- 검색의 핵심 부분은 문서의 관련 부분만 가져오는 것

 

🦜Text embedding models

 문서의 임베딩을 생성하는 것

- 임베딩은 텍스트의 의미를 포착하여 유사한 텍스트 조각을 빠르고 효율적으로 찾을 수 있게 함

- LangChain은 오픈 소스부터 독점 API에 이르기까지 25개 이상의 다른 임베딩 제공업체 및 방법과 통합을 제공

 

🦜Vector stores

임베딩의 효율적인 저장 및 검색을 지원하는 데이터베이스

- LangChain은 오픈 소스 로컬 저장소부터 클라우드 호스팅 독점 저장소에 이르기까지 50개 이상의 다양한 벡터 저장소와의 통합을 제공

 

🦜Retrievers

데이터베이스에 있는 데이터 검색

 

- Parent Document Retriever

: 부모 문서당 여러 임베딩을 생성할 수 있게 하여 더 작은 조각을 검색하지만 더 큰 맥락을 반환

- Self-querying

: 질문에서 의미론적 부분을 다른 메타데이터 필터와 분리

- Ensemble Retriever

: 여러 다른 출처에서 또는 여러 다른 알고리즘을 사용하여 문서를 검색

- 기타

 

🦜Indexing

LangChain 인덱싱 API

데이터를 벡터 저장소로 동기화

 

벡터 저장소에 중복 콘텐츠를 작성하지 않도록 함

변경되지 않은 콘텐츠를 다시 작성하지 않도록 함

변경되지 않은 콘텐츠에 대해 임베딩을 다시 계산하지 않도록 함

=> 시간과 돈을 절약하고 벡터 검색 결과를 개선