임베딩 리트리버

임베딩 리트리버 (InMemoryEmbeddingRetriever)

InMemoryEmbeddingRetrieverInMemoryDocumentStore와 호환되는 임베딩 기반 리트리버예요. 쿼리 임베딩과 문서 임베딩을 비교해 그 결과를 바탕으로 InMemoryDocumentStore에서 쿼리와 가장 관련 있는 Document를 가져와요. 임베딩 기반 검색을 찾고 있다면 이 리트리버를 InMemoryDocumentStore와 함께 쓰세요.

출처: 공식문서

주요 정보

항목
파이프라인에서 가장 흔한 위치 쿼리 파이프라인:
RAG 파이프라인에서는 PromptBuilder
의미 검색 파이프라인에서는 마지막 컴포넌트
추출적 QA 파이프라인에서는 TextEmbedder 뒤, TransformersExtractiveReader
필수 초기화 변수 document_store: InMemoryDocumentStore 인스턴스
필수 실행 변수 query_embedding: 부동소수점 숫자 리스트
출력 변수 documents: 문서 리스트
API 레퍼런스 Retrievers
GitHub 링크 https://github.com/deepset-ai/haystack/blob/main/haystack/components/retrievers/in_memory/embedding_retriever.py
패키지 이름 haystack-ai

개요

InMemoryEmbeddingRetrieverInMemoryDocumentStore와 호환되는 임베딩 기반 리트리버예요. 쿼리 임베딩과 문서 임베딩을 비교해 그 결과를 바탕으로 InMemoryDocumentStore에서 쿼리와 가장 관련 있는 Document를 가져와요.

NLP 시스템에서 InMemoryEmbeddingRetriever를 사용할 때는 쿼리 임베딩과 문서 임베딩이 준비돼 있는지 확인해야 해요. 인덱싱 파이프라인에 DocumentEmbedder를, 쿼리 파이프라인에 Text Embedder를 추가하면 됩니다. 자세한 내용은 임베더를 참고하세요.

query_embedding 외에도 InMemoryEmbeddingRetrievertop_k(가져올 최대 Document 수)와 filters(검색 공간을 좁히는 용도) 같은 다른 선택적 파라미터를 받아요.

임베딩 검색에 사용할 embedding_similarity_function은 해당 InMemoryDocumentStore가 초기화될 때 정의해야 해요.

사용법

파이프라인 안에서 쓰기

쿼리 파이프라인에서 이 리트리버를 이렇게 사용해요.

이 페이지의 예시는 sentence-transformers-haystack 패키지의 Sentence Transformers 임베더를 사용해요. 예시를 실행하려면 설치하세요.

pip install sentence-transformers-haystack
from haystack import Document, Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack_integrations.components.embedders.sentence_transformers import (
    SentenceTransformersTextEmbedder,
    SentenceTransformersDocumentEmbedder,
)
from haystack.components.retrievers import InMemoryEmbeddingRetriever

document_store = InMemoryDocumentStore(embedding_similarity_function="cosine")

documents = [
    Document(content="There are over 7,000 languages spoken around the world today."),
    Document(
        content="Elephants have been observed to behave in a way that indicates a high level of self-awareness, such as recognizing themselves in mirrors.",
    ),
    Document(
        content="In certain parts of the world, like the Maldives, Puerto Rico, and San Diego, you can witness the phenomenon of bioluminescent waves.",
    ),
]

document_embedder = SentenceTransformersDocumentEmbedder()

documents_with_embeddings = document_embedder.run(documents)["documents"]
document_store.write_documents(documents_with_embeddings)

query_pipeline = Pipeline()
query_pipeline.add_component("text_embedder", SentenceTransformersTextEmbedder())
query_pipeline.add_component(
    "retriever",
    InMemoryEmbeddingRetriever(document_store=document_store),
)
query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")

query = "How many languages are there?"

result = query_pipeline.run({"text_embedder": {"text": query}})

print(result["retriever"]["documents"][0])

더 알아보기