- 출처 : https://python.langchain.com/docs/modules/data_connection/
- 이 블로그 글은 LangChain API document의 글을 기반으로 번역되었으며 이 과정에서 약간의 내용이 추가되었습니다.
- 본 글에서는 Retrieval 문서 전반에 대해 요약합니다.
많은 LLM 어플리케이션은 유저의 데이터를 이용하기를 바라지만, 모델의 학습 데이터에는 존재하지 않습니다. 이를 해결하기 위한 첫 번째 방법은 Retrieval Augmented Generation (RAG)입니다. 이 프로세스에서 외부 데이터는 `검색`되고 LLM이 언어를 `생성`할 때 입력으로 사용됩니다.
LangChain은 RAG 어플리케이션을 위한 모든 빌딩 블록을 제공합니다. 이 세션에서는 `검색` 단계에 관련된 모든 것을 커버합니다. 이는 간단하게 들리지만, 실제로 약간 복잡합니다.
Retreval은 총 5개의 하부 세션으로 분리되어있습니다. 하부 세션은 다음과 같습니다.
이 세션에서는 다양한 형식의 문서를 가져오는 Document loaders를 다룹니다. LangChain은 약 100여개가 넘는 다양한 document loaders를 제공합니다. 그리고 모든 타입의 문서(html, PDF, code)를 로드할 수 있으며 모든 타입의 위치( private s3 buckets, public wepsites)에서 로드할 수 있습니다.
retrieval의 핵심 요소는 문서에서 쿼리와 관련된 부분만을 선택하는 것입니다. retrieval을 위해 문서를 최선의 준비하는 데 있어 다양한 transformation 단계를 포함합니다. 핵심 부분 중 하나는 큰 문서를 작은 청크(chunk)로 분할하는 것입니다. LangChain은 이를 위해 다양한 알고리즘을 제공하고 있으며, 특히 특정 문서 타입(code, markdown)에 최적화된 알고리즘 또한 제공하고 있습니다.
Retrieval의 또 다른 핵심 요소는 문서를 임베딩하는 것입니다. 임베딩은 텍스트의 의미를 포착하고 빠르고 효율적으로 쿼리와 관련된 텍스트를 찾을 수 있게 합니다. LangChain은 25개가 넘는 다양한 embedding providers와 방법에 대한 integrations를 제공하고 있으며 이를 통해 유저가 필요한 최선의 임베딩 모델을 선택할 수 있습니다. LangChain은 표준 인터페이스를 사용하여 다른 모델 간의 교체가 쉽습니다.
임베딩이란 개념이 떠오르면서, 임베딩을 효율적으로 저장하고 검색할 수 있는 데이터베이스가 필요하게 되었습니다. LangChain은 50개가 넘는 vectorstores에 대한 integrations를 제공하고 있으며 유저는 필요에 따라 최선의 vectorstore를 선택할 수 있습니다. LangChain은 표준 인터페이스를 사용하여 다른 vectorstore간의 교체가 쉽습니다.
한번 데이터가 데이터베이스로 들어오면, 이제 데이터베이스의 데이터를 검색해야 합니다. LangChain은 다양한 retrieval 알고리즘을 제공하고 있습니다. LangChain은 간단한 semantic search 방법론부터 검색 성능을 올릴 수 있는 다양한 알고리즘을 제공하며, 일부는 다음과 같습니다.
Parent Document Retriever 이는 하나의 parent 문서 당 여러 개의 임베딩을 생성하여, 작은 청크를 조회하여 더 큰 문맥을 반환할 수 있게 합니다. |
|
Self Query Retriever 사용자 질문은 종종 의미뿐만 아니라 메타데이터 필터로 나타낼 수 있는 논리를 표현하는 요소가 포함되곤 합니다. self-query는 쿼리에 포함된 다른 메타데이터 필터와 분리하여 쿼리의 의미론적 부분을 파싱할 수 있게 해줍니다. |
|
Ensemble Retriever 가끔 다수의 다른 소스 혹은 다수의 다른 알고리즘을 사용하여 문서를 검색해야할 수 있습니다. Ensembel Retriever는 이를 쉽게 도와줍니다. |
[Retrieval] Document transformers (1) | 2023.08.24 |
---|---|
[Retrieval] Document loaders (0) | 2023.08.24 |
[MODEL I/O - Langauge Models] Output Parsers - 2 (0) | 2023.07.24 |
[MODEL I/O - Langauge Models] Output Parsers - 1 (0) | 2023.07.14 |
[MODEL I/O - Langauge Models] Chat Model How to (0) | 2023.07.13 |
댓글 영역