goodbye

패스트캠퍼스 환급챌린지 47일차 : 테디노트의 RAG 비법노트 강의 후기 본문

Lecture/패스트캠퍼스

패스트캠퍼스 환급챌린지 47일차 : 테디노트의 RAG 비법노트 강의 후기

goodbye 2025. 8. 16. 21:10

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다

https://fastcampus.info/4n8ztzq

 

(~6/20) 50일의 기적 AI 환급반💫 | 패스트캠퍼스

초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!

fastcampus.co.kr

패스트캠퍼스 환급챌린지 47일차!


1) 공부 시작 시간 인증

 

2) 공부 종료 시간 인증

 

3) 강의 수강 클립 인증

 

4) 학습 인증샷

 

5) 학습통계


Today I Learned

Retrievers

벡터스토어, 그래프 데이터베이스, 관계형 데이터베이스 등 다양한 유형의 검색 시스템이 존재합니다. 대규모 언어 모델의 인기가 높아짐에 따라 검색 시스템은 AI 애플리케이션(예: RAG )에서 중요한 구성 요소가 되었습니다. LangChain은 이러한 중요성과 다양성 덕분에 다양한 유형의 검색 시스템과 상호 작용할 수 있는 통일된 인터페이스를 제공합니다. LangChain 검색기 인터페이스는 다음과 같이 간단합니다.

  1. 입력: 쿼리(문자열)
  2. 출력: 문서 목록(표준화된 LangChain 문서
  3. 객체)

핵심

모든 검색기는 자연어 쿼리를 사용하여 문서를 검색하기 위한 간단한 인터페이스를 구현합니다.

검색기의 유일한 요구 사항은 쿼리를 받아 문서를 반환하는 기능입니다. 특히 LangChain의 검색기 클래스는_get_relevant_documents a를 받아서 쿼리와 가장 관련성이 높은 Documentquery: str 객체 목록을 반환하는 메서드 만 구현하면 됩니다 . 관련 문서를 가져오는 데 사용되는 기본 로직은 검색기에 의해 지정되며, 애플리케이션에 가장 유용한 로직을 사용할 수 있습니다.

LangChain 리트리버는 LangChain 구성 요소의 표준 인터페이스인 실행 가능한 입니다 . 즉, 를 포함한 몇 가지 일반적인 메서드 invoke를 사용하여 상호 작용할 수 있습니다. 리트리버는 쿼리를 통해 호출할 수 있습니다.

docs = retriever.invoke(query)

검색기는 두 가지 속성을 갖는 Document 객체 목록을 반환합니다 .

  • page_content: 이 문서의 내용입니다. 현재는 문자열입니다.
  • metadata: 이 문서와 관련된 임의의 메타데이터(예: 문서 ID, 파일 이름, 출처 등).
  • 나만의 맞춤형 리트리버를 만드는 방법에 대한 가이드를 확인하세요 .

일반적인

검색 인터페이스의 유연성에도 불구하고, 몇 가지 일반적인 검색 시스템 유형이 자주 사용됩니다.

검색

리트리버는 실제로 문서를 저장할 필요가 없다는 점에 유의하세요 . 예를 들어, 검색 API를 기반으로 검색 결과만 반환하는 리트리버를 구축할 수 있습니다! Amazon Kendra 또는 Wikipedia Search 와의 리트리버 통합을 확인해 보세요 .

관계형 또는 그래프

리트리버는 관계형 데이터베이스나 그래프 데이터베이스 기반으로 구축될 수 있습니다. 이러한 경우, 자연어로부터 구조화된 쿼리를 생성하는 쿼리 분석 기술이 매우 중요합니다. 예를 들어, 텍스트-SQL 변환 기능을 사용하여 SQL 데이터베이스용 리트리버를 구축할 수 있습니다. 이를 통해 자연어 쿼리(문자열) 리트리버를 백그라운드에서 SQL 쿼리로 변환할 수 있습니다.

추가 읽기

  • SQL 데이터베이스와 텍스트-SQL을 사용하여 검색기를 만드는 방법에 대한 내용은 튜토리얼을
  • 참조하세요 .
  • 그래프 데이터베이스와 텍스트-Cypher를 사용하여 검색기를 만드는 방법에 대한 내용은 튜토리얼을
  • 참조하세요 .

어휘

검색 개념 검토에서 논의했듯이 , 많은 검색 엔진은 쿼리의 단어와 각 문서의 단어를 매칭하는 방식을 기반으로 합니다. [BM25](https://en.wikipedia.org/wiki/Okapi_BM25#:~:text=BM25 is a bag-of,slightly different components and parameters.) 와 TF-IDF는 널리 사용되는 두 가지 어휘 검색 알고리즘 입니다 . LangChain은 다양한 어휘 검색 알고리즘/엔진에 대한 검색기를 제공합니다.

추가 읽기

  • BM25 리트리버 통합을 확인하세요 .
  • TF-IDF 검색기 통합을 확인하세요 .
  • Elasticsearch 검색기 통합을 확인하세요 .

벡터

벡터 스토어는 비정형 데이터를 인덱싱하고 검색하는 강력하고 효율적인 방법입니다. 벡터 스토어는 as_retriever()메서드를 호출하여 검색기로 사용할 수 있습니다.

vectorstore = MyVectorStore()
retriever = vectorstore.as_retriever()

고급 검색

검색기 인터페이스는 매우 간단하여 검색 쿼리가 주어지면 객체 목록을 반환하기 때문에 Document앙상블을 사용하여 여러 검색기를 결합할 수 있습니다. 이는 특히 다양한 유형의 관련 문서를 찾는 데 효과적인 여러 검색기가 있는 경우 유용합니다. 선형 가중치 점수를 가진 여러 검색기를 결합하는 앙상블 검색기를 쉽게 만들 수 있습니다 .

# Initialize the ensemble retriever
ensemble_retriever = EnsembleRetriever(
    retrievers=[bm25_retriever, vector_store_retriever], weights=[0.5, 0.5]
)

앙상블을 할 때 여러 리트리버의 검색 결과를 어떻게 결합할까요? 이는 여러 리트리버의 결과를 가져와서 상호 순위 융합(RRF) 과 같은 더욱 정교한 알고리즘을 사용하여 결합하는 재순위화(reranking) 개념의 기반이 됩니다 .

소스 문서

많은 검색기는 문서를 쉽게 검색할 수 있도록 일종의 인덱스를 활용합니다. 인덱싱 과정에는 변환 단계가 포함될 수 있습니다(예: 벡터스토어는 종종 문서 분할을 사용합니다). 어떤 변환을 사용하든 변환된 문서 와 원본 문서 간의 연결을 유지하는 데 매우 유용할 수 있으며, 이를 통해 검색기는 원본 문서를 반환할 수 있습니다 .

이 기능은 AI 애플리케이션에서 특히 유용한데, 모델의 문서 컨텍스트가 손실되지 않도록 보장하기 때문입니다. 예를 들어, 벡터스토어에서 문서를 인덱싱할 때 작은 청크 크기를 사용할 수 있습니다. 검색 결과로 청크 만 반환하면 모델은 해당 청크에 대한 원본 문서 컨텍스트를 잃게 됩니다.

LangChain에는 이러한 문제를 해결하는 데 사용할 수 있는 두 가지 검색기가 있습니다. 다중 벡터 검색기는 사용자가 소스 문서와의 연결을 유지하면서 모든 문서 변환(예: LLM을 사용하여 문서 요약 작성)을 사용하여 인덱싱할 수 있도록 합니다. ParentDocument 검색기는 소스 문서와의 연결을 유지하면서 텍스트 분할 변환에서 문서 청크를 연결하여 인덱싱합니다.

이름 인덱스 유형 LLM을 사용합니다 언제 사용할 것인가 설명

부모 문서 벡터 저장소 + 문서 저장소 아니요 페이지에 개별 정보가 많이 들어 있는 경우, 각 정보를 색인하는 것이 가장 좋지만, 모두 함께 검색하는 것이 가장 좋습니다. 이 방법은 각 문서에 대해 여러 개의 청크를 인덱싱하는 것을 포함합니다. 그런 다음 임베딩 공간에서 가장 유사한 청크를 찾습니다. 하지만 개별 청크가 아닌 전체 부모 문서를 검색하여 반환합니다.
다중 벡터 벡터 저장소 + 문서 저장소 때때로 인덱싱 중 텍스트 자체보다 색인과 더 관련이 있다고 생각되는 정보를 문서에서 추출할 수 있는 경우. 여기에는 각 문서에 대해 여러 개의 벡터를 만드는 것이 포함됩니다. 각 벡터는 다양한 방식으로 생성될 수 있습니다. 예를 들어 텍스트 요약이나 가상 질문 등이 있습니다.
Comments