목차
샘플 벡터 데이터베이스를 구축하십시오
간단한 사용
맞춤형 팁
컨텍스트 압축 개요
구현 단계
사용자 정의 검색자를 만듭니다
인터페이스
결론적으로
자주 묻는 질문
기술 주변기기 일체 포함 Langchain의 리트리버를위한 3 가지 고급 전략

Langchain의 리트리버를위한 3 가지 고급 전략

Mar 19, 2025 am 11:16 AM

Langchain 검색 : 문서에 대한 효율적이고 유연한 액세스

Langchain Framework의 검색자는 구조화되지 않은 쿼리를 기반으로 문서를 반환하기위한 유연한 인터페이스를 제공하는 중요한 역할을합니다. 벡터 데이터베이스와 달리 검색자는 문서를 저장할 필요가 없습니다. 벡터 데이터베이스는 레트로 어의 기초 역할을 할 수 있지만 각각의 특정 유스 케이스에 대해 사용자 정의 할 수있는 다양한 유형의 레트로어가 있습니다.

Langchain의 리트리버를위한 3 가지 고급 전략

학습 목표

  • Langchain에서 검색 자의 주요 역할을 이해하고 다양한 응용 프로그램 요구를 충족시키기 위해 효율적이고 유연한 문서 검색을 달성하십시오.
  • Langchain의 Searcher (벡터 데이터베이스에서 멀티 쿼리 및 컨텍스트 압축)가 관련 정보에 대한 액세스를 단순화하는 방법을 알아보십시오.
  • 이 안내서는 Langchain의 다양한 검색기 유형을 다루며 각 검색자가 쿼리 처리 및 데이터 액세스를 최적화하도록 사용자 정의하는 방법을 설명합니다.
  • Langchain의 Searcher 기능을 파고 문서 검색 정확도 및 관련성을 향상시키기위한 도구를 확인하십시오.
  • Langchain의 Custom Retriever가 특정 요구에 적응하는 방법에 대해 알아보십시오. 개발자는 응답이 높은 응용 프로그램을 만들 수 있습니다.
  • 언어 모델과 벡터 데이터베이스를 통합하여보다 정확하고 효율적인 검색 결과를 얻는 Langchain의 검색 기술을 탐색하십시오.

목차

  • 학습 목표
  • Langchain의 검색 자
  • 벡터 데이터베이스를 검색 자로 사용하십시오
  • MultiqueryRerriever 사용
    • 샘플 벡터 데이터베이스를 구축하십시오
    • 간단한 사용
    • 맞춤형 팁
  • 컨텍스트 압축을 사용하여 검색하는 방법
    • 컨텍스트 압축 개요
  • 사용자 정의 검색자를 만듭니다
    • 인터페이스
  • 결론적으로
  • 자주 묻는 질문

Langchain의 검색 자

검색자는 입력으로 문자열 쿼리를 수신하고 문서 개체 목록을 출력합니다. 이 메커니즘을 사용하면 응용 프로그램이 관련 정보를 효율적으로 획득하여 대규모 데이터 세트 또는 지식 기반과의 고급 상호 작용을 가능하게합니다.

  1. 벡터 데이터베이스를 검색 자로 사용하십시오

벡터 데이터베이스 리트리버는 벡터 표현을 사용하여 문서를 효율적으로 검색합니다. 벡터 스토리지 클래스의 경량 래퍼 역할을하며 검색기 인터페이스를 준수하며 유사성 검색 및 최대 한계 상관 관계 (MMR)와 같은 메소드를 사용합니다.

벡터 데이터베이스에서 리트리버를 만들려면 .as_retriever 메소드를 사용하십시오. 예를 들어, 고객 리뷰를 기반으로 한 Pinecone Vector 데이터베이스의 경우 다음과 같이 설정할 수 있습니다.

 langchain_community.document_loaders에서 csvloader를 가져옵니다
langchain_community.vectorstores import pinecone에서
langchain_openai 가져 오기 OpenAiembeddings
langchain_text_splitters import aratertextsplitter에서

로더 = csvloader ( "customer_reviews.csv")
documents = loader.load ()
text_splitter = charac
텍스트 = text_splitter.split_documents (문서)
Embeddings = OpenAiembedDings ()
vectorstore = pinecone.from_documents (텍스트, 임베디드)
Retriever = vectorstore.as_retriever ()
로그인 후 복사

이제이 검색자를 사용하여 관련 주석을 쿼리 할 수 ​​있습니다.

 Docs = retriver.invoke ( "고객은 배터리 수명에 대해 어떻게 생각합니까?")
로그인 후 복사

기본적으로 검색자는 유사성 검색을 사용하지만 MMR을 검색 유형으로 지정할 수 있습니다.

 Retriever = vectorstore.as_retriever (search_type = "mmr")
로그인 후 복사

또한 유사성 점수 임계 값과 같은 매개 변수를 전달하거나 Top-K를 사용하여 결과 수를 제한 할 수 있습니다.

 Retriever = vectorstore.as_retriever (search_kwargs = { "k": 2, "score_threshold": 0.6})
로그인 후 복사

산출:

Langchain의 리트리버를위한 3 가지 고급 전략

벡터 데이터베이스를 검색 자로 사용하면 관련 정보에 대한 효율적인 액세스를 보장하여 문서 검색을 향상시킬 수 있습니다.

  1. MultiqueryRerriever 사용

MultiqueryReerriever는 쿼리 문구의 변경 및 차선 임베딩과 같은 일반적인 한계를 해결함으로써 거리 기반 벡터 데이터베이스 검색을 향상시킵니다. LLM (Lange Language Model) 자동화 프롬프트 조정을 사용하면 다른 각도에서 주어진 사용자 입력에 대해 여러 쿼리를 생성 할 수 있습니다. 이 프로세스를 사용하면 각 쿼리에 대한 관련 문서를 검색하고 결과를 결합하여 더 풍부한 잠재적 문서 세트를 생성합니다.

샘플 벡터 데이터베이스를 구축하십시오

MultiqueryReryRiever를 보여 주려면 CSV 파일의 제품 설명을 사용하여 벡터 저장소를 작성하겠습니다.

 langchain_community.document_loaders에서 csvloader를 가져옵니다
langchain_community.vectorstores에서 faiss를 가져옵니다
langchain_openai 가져 오기 OpenAiembeddings
langchain_text_splitters import aratertextsplitter에서

#로드 제품 설명 로더 = CSVloader ( "Product_Descriptions.csv")
data = loader.load ()

# 블록으로 텍스트를 분할 text_splitter = charac
documents = text_splitter.split_documents (데이터)

# 벡터 스토리지 임베드 생성 = OpenAiembedDings ()
vectordb = faiss.from_documents (문서, 임베디드)
로그인 후 복사

간단한 사용

MultiqueryReerriever를 사용하려면 쿼리 생성에 사용되는 LLM을 지정하십시오.

 langchain.retrievers.multi_query import multiqueryretriever에서
langchain_openai import Chatopenai에서

Question = "고객은 스마트 폰에서 어떤 기능을 중요하게 생각합니까?"
llm = chatopenai (온도 = 0)
retriever_from_llm = multiqueryRetriever.from_llm (
    Retriever = vectordb.as_retriever (), llm = llm
))
고유 한
LEN (고유 _docs) # 검색 된 고유 문서 수
로그인 후 복사

산출:

Langchain의 리트리버를위한 3 가지 고급 전략

MultiqueryRertiever는 여러 쿼리를 생성하여 검색된 문서의 다양성과 관련성을 향상시킵니다.

맞춤형 팁

생성 된 쿼리를 조정하려면 사용자 정의 PromptTemplate 및 출력 파서를 만들 수 있습니다.

 langchain_core.output_parsers에서 baseoutputparser를 가져옵니다
langchain_core에서 prompttemplate 가져 오기
입력 가져 오기 목록에서

# 사용자 정의 출력 Parser 클래스 LinelistOutputParser (BaseOutputParser [list [str]] :
    def parse (self, text : str) -> list [str] :
        반환 목록 (필터 (없음, text.strip (). split ( "\ n"))))

output_parser = linelistoutputparser ()

# query 생성 Query_prompt의 사용자 정의 프롬프트 = PrustTemplate (
    input_variables = [ "Question"],
    템플릿 = "" "질문의 다섯 가지 버전을 생성합니다. {Question}" ""
))

llm_chain = query_prompt |

# 리트리버 리트리버 초기화 = MultiqueryReerriever (
    Retriever = vectordb.as_retriever (), llm_chain = llm_chain, parser_key = "lines"
))

고유 한 _docs = retriever.invoke ( "고객은 스마트 폰에서 어떤 기능을 소중히 여기는가?")
LEN (고유 _docs) # 검색 된 고유 문서 수
로그인 후 복사

산출

Langchain의 리트리버를위한 3 가지 고급 전략

MultiqueryReerriever를 사용하면보다 효율적인 검색 프로세스를 달성하여 사용자 쿼리를 기반으로 다양하고 포괄적 인 결과를 보장 할 수 있습니다.

  1. 컨텍스트 압축을 사용하여 검색하는 방법

대규모 문서 모음에서 관련 정보를 검색하는 것은 특히 데이터 수집이 사용자가 할 특정 쿼리에 대해 알 수없는 경우 어려울 수 있습니다. 종종 귀중한 통찰력은 긴 문서에 숨겨져있어 LLM (Language Model)에 대한 비효율적이고 비용이 많이 드는 호출을 초래하면서 이상적인 것보다 적은 대응 성을 제공합니다. 컨텍스트 압축은 검색 프로세스를 개선 하여이 문제를 해결하여 사용자의 쿼리에 따라 관련 정보가 반환되도록합니다. 이 압축에는 단일 문서의 내용을 줄이고 관련없는 문서를 필터링하는 것이 포함됩니다.

컨텍스트 압축 개요

컨텍스트 압축 검색기는 기본 검색기를 문서 압축기와 통합하여 실행됩니다. 이 메소드는 문서를 전체적으로 반환하지 않지만 쿼리에서 제공 한 컨텍스트를 기반으로 문서를 압축합니다. 이 압축에는 단일 문서의 내용을 줄이고 관련없는 문서를 필터링하는 것이 포함됩니다.

구현 단계

  1. 기본 검색기 초기화 : 먼저 일반 벡터 스토리지 검색기를 설정하십시오. 예를 들어 기후 변화 정책에 대한 뉴스 기사를 고려하십시오.
 langchain_community.document_loaders에서 텍스트 로더를 가져옵니다
langchain_community.vectorstores에서 faiss를 가져옵니다
langchain_openai 가져 오기 OpenAiembeddings
langchain_text_splitters import aratertextsplitter에서

# 기사 문서를로드하고 분할 = 텍스트 로더 ( "climate_change_policy.txt"). load ()
text_splitter = charac
텍스트 = text_splitter.split_documents (문서)

# 초기화 벡터 스토리지 리트리버 리트리버 = faiss.from_documents (텍스트, OpenAiEmbedDings ()). as_retriever ()
로그인 후 복사
  1. 초기 쿼리 실행 : 쿼리를 실행하여 기본 리트리버가 반환 한 결과를 볼 수 있으며 관련성 및 관련이없는 정보가 포함될 수 있습니다.
 docs = retriver.invoke ( "기후 변화와 싸우기 위해 어떤 행동이 제안되고 있습니까?")
로그인 후 복사
  1. 컨텍스트 압축을 사용한 향상된 검색 : ContextualcompressionReretriever로 Basic Searcher를 래핑하고 LLMCHAINEXTRARTOR를 사용하여 관련 컨텐츠를 추출합니다.
 langchain.retrievers에서 컨텍스트 compressionretriever를 가져옵니다
langchain.retrievers.document_compressors import llmchainextractor
langchain_openai import OpenAi에서

llm = openai (온도 = 0)
compressor = llmchainextractor.from_llm (llm)
compression_retriever = contextualcompressionretriever (
    base_compressor = compressor, base_retriever = 리트리버
))

# compressed_docs = compression_retriever.invoke 수행 ( "기후 변화와 싸우기 위해 어떤 조치가 제안되고 있습니까?")
로그인 후 복사

압축 결과보기 : ContextualCompressionReRiever는 초기 문서를 처리하고 쿼리와 관련된 관련 정보 만 추출하여 응답을 최적화합니다.

사용자 정의 검색자를 만듭니다

많은 LLM 응용 프로그램에서 검색이 필수적입니다. 그 작업은 사용자 쿼리를 기반으로 관련 문서를 얻는 것입니다. 이 문서는 LLM 프롬프트로 형식화되어 적절한 응답을 생성 할 수 있습니다.

인터페이스

사용자 정의 리트리버를 만들려면 Baseretriever 클래스를 확장하고 다음을 구현하십시오.

방법 설명하다 필수/선택 사항
_get_relevant_documents 쿼리와 관련된 문서를 검색합니다. 필수의
_aget_relevant_documents 기본 지원을위한 비동기 구현. 선택 과목

BaseRetriever에서 상속 된 것은 리트리버에 표준 실행 가능한 기능을 제공합니다.

다음은 간단한 리트리버의 예입니다.

 입력 가져 오기 목록에서
langchain_core에서 문서 가져 오기
langchain_core.retrievers import Baseretriever에서

클래스 Toyretriever (Baseretriever) :
    "" "사용자 쿼리가 포함 된 첫 번째 K 문서를 반환하는 간단한 리트리버." ""
    문서 : 목록 [문서]
    K : int

    def _get_relevant_documents (self, query : str) -> 목록 [문서] :
        matching_documents = [doc.page_content.lower ()의 query.lower () 인 경우 self.documents의 doc.
        Matching_documents 반품 [: self.k]

# 예제 사용 문서 = [
    문서 ( "개는 훌륭한 회사입니다.", { "type": "dog"}),
    문서 ( "고양이는 독립 애완 동물입니다.", { "type": "cat"}),
]]

Retriever = Toyretriever (Documents = Documents, K = 1)
결과 = retriver.invoke ( "개")
print (result [0] .page_content)
로그인 후 복사

산출

Langchain의 리트리버를위한 3 가지 고급 전략

이 구현은 Langchain에서 사용자 정의 검색 자의 핵심 기능을 보여주는 사용자 입력을 기반으로 문서를 검색하는 간단한 방법을 제공합니다.

결론적으로

Langchain Framework에서 Searcher는 다양한 문서 유형 및 사용 사례에서 관련 정보에 효과적으로 액세스 할 수있는 강력한 도구입니다. 개발자는 다양한 검색기 유형 (예 : Vector Storage Retrievers, MultiqueryReryretriever 및 Context Compression Retrievers)을 이해하고 구현함으로써 응용 프로그램의 특정 요구에 따라 문서 검색을 사용자 정의 할 수 있습니다.

각 리트리버 유형은 다중 레비 트리버 사용에서 컨텍스트 압축 사용, 응답 최적화에 이르기까지 고유 한 장점이 있습니다. 또한, 사용자 정의 검색자를 작성하면 내장 옵션이 충족되지 않을 수있는 특수 요구 사항을 수용 할 수있는 유연성이 향상됩니다. 이러한 검색 기술을 마스터하면 개발자는 언어 모델 및 대규모 데이터 세트의 잠재력을 활용하는보다 효율적이고 반응이 좋은 응용 프로그램을 구축 할 수 있습니다.

자주 묻는 질문

Q1. Langchain에서 검색 자의 기능은 무엇입니까? A1. 주요 기능은 쿼리를 기반으로 관련 문서를 얻는 것입니다. 이를 통해 응용 프로그램은 문서 자체를 저장하지 않고 큰 데이터 세트에서 필요한 정보에 효과적으로 액세스 할 수 있습니다.

Q2. 검색 자와 벡터 데이터베이스 사이의 것은 어떻습니까? a2. 벡터는 유사성 기반 검색을 허용하는 방식으로 문서를 저장하는 데 사용되며 검색자는 쿼리를 기반으로 검색을위한 인터페이스입니다. 벡터 데이터베이스는 검색 자의 일부가 될 수 있지만 검색 자의 작업은 관련 정보를 얻는 데 중점을 둡니다.

Q3. MultiperyRertiever는 무엇이며 어떻게 작동합니까? A3. MultiqueryRiever는 언어 모델을 사용하여 여러 가지 변형을 생성하여 검색 결과를 향상시킵니다. 이 방법은 다른 문구 문제와 관련 될 수있는 더 넓은 범위의 문서를 캡처하여 검색 정보의 풍부함을 향상시킵니다.

Q4. 컨트롤 압축이 중요한 이유는 무엇입니까? A4. Context Comp는 문서의 내용을 관련 부품으로 만 줄이고 관련된 정보를 필터링하여 검색 결과를 최적화합니다. 완전한 문서에는 관련이없는 세부 사항이 포함되어 있고 자원을 저장하고보다 중앙 집중식 응답을 제공 할 수 있으므로 큰 컬렉션에서 특히 유용합니다.

Q5. a5.

위 내용은 Langchain의 리트리버를위한 3 가지 고급 전략의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Meta Llama 3.2- 분석 Vidhya를 시작합니다 Meta Llama 3.2- 분석 Vidhya를 시작합니다 Apr 11, 2025 pm 12:04 PM

메타의 라마 3.2 : 멀티 모달 및 모바일 AI의 도약 Meta는 최근 AI에서 강력한 비전 기능과 모바일 장치에 최적화 된 가벼운 텍스트 모델을 특징으로하는 AI의 상당한 발전 인 Llama 3.2를 공개했습니다. 성공을 바탕으로 o

10 생성 AI 코드의 생성 AI 코딩 확장 대 코드를 탐색해야합니다. 10 생성 AI 코드의 생성 AI 코딩 확장 대 코드를 탐색해야합니다. Apr 13, 2025 am 01:14 AM

이봐, 코딩 닌자! 하루 동안 어떤 코딩 관련 작업을 계획 했습니까? 이 블로그에 더 자세히 살펴보기 전에, 나는 당신이 당신의 모든 코딩 관련 문제에 대해 생각하기를 원합니다. 완료? - &#8217

AV 바이트 : Meta ' S Llama 3.2, Google의 Gemini 1.5 등 AV 바이트 : Meta ' S Llama 3.2, Google의 Gemini 1.5 등 Apr 11, 2025 pm 12:01 PM

이번 주 AI 환경 : 발전의 회오리 바람, 윤리적 고려 사항 및 규제 토론. OpenAi, Google, Meta 및 Microsoft와 같은 주요 플레이어

직원에게 AI 전략 판매 : Shopify CEO의 선언문 직원에게 AI 전략 판매 : Shopify CEO의 선언문 Apr 10, 2025 am 11:19 AM

Shopify CEO Tobi Lütke의 최근 메모는 AI 숙련도가 모든 직원에 대한 근본적인 기대를 대담하게 선언하여 회사 내에서 중요한 문화적 변화를 표시합니다. 이것은 도망가는 트렌드가 아닙니다. 그것은 p에 통합 된 새로운 운영 패러다임입니다

비전 언어 모델 (VLMS)에 대한 포괄적 인 안내서 비전 언어 모델 (VLMS)에 대한 포괄적 인 안내서 Apr 12, 2025 am 11:58 AM

소개 생생한 그림과 조각으로 둘러싸인 아트 갤러리를 걷는 것을 상상해보십시오. 이제 각 작품에 질문을하고 의미있는 대답을 얻을 수 있다면 어떨까요? “어떤 이야기를하고 있습니까?

GPT-4O vs Openai O1 : 새로운 OpenAI 모델은 과대 광고 가치가 있습니까? GPT-4O vs Openai O1 : 새로운 OpenAI 모델은 과대 광고 가치가 있습니까? Apr 13, 2025 am 10:18 AM

소개 OpenAi는 기대가 많은 "Strawberry"아키텍처를 기반으로 새로운 모델을 출시했습니다. O1로 알려진이 혁신적인 모델은 추론 기능을 향상시켜 문제를 통해 생각할 수 있습니다.

SQL에서 열을 추가하는 방법? - 분석 Vidhya SQL에서 열을 추가하는 방법? - 분석 Vidhya Apr 17, 2025 am 11:43 AM

SQL의 Alter Table 문 : 데이터베이스에 열을 동적으로 추가 데이터 관리에서 SQL의 적응성이 중요합니다. 데이터베이스 구조를 즉시 조정해야합니까? Alter Table 문은 솔루션입니다. 이 안내서는 Colu를 추가합니다

최고의 프롬프트 엔지니어링 기술의 최신 연간 편집 최고의 프롬프트 엔지니어링 기술의 최신 연간 편집 Apr 10, 2025 am 11:22 AM

내 칼럼을 처음 접할 수있는 분들을 위해, 나는 구체화 된 AI, AI 추론, AI의 첨단 획기적인 혁신, AI 교육, AI의 수비, ai re

See all articles