PerplexityDocumentEmbedder
PerplexityDocumentEmbedder
PerplexityDocumentEmbedder는 문서 목록의 임베딩을 계산해 각 문서의 embedding 필드에 얻은 벡터를 저장해요. Perplexity의 임베딩 모델을 사용하죠.
이 컴포넌트가 계산한 벡터는 문서 컬렉션에 대해 임베딩 검색을 수행하는 데 꼭 필요해요. 검색 시점에 쿼리를 나타내는 벡터를 문서들의 벡터와 비교해 가장 유사하거나 관련 있는 문서를 찾는 방식이에요.
출처: 문서
본문
| 항목 | 내용 |
|---|---|
| 파이프라인에서 가장 흔한 위치 | 인덱싱 파이프라인의 DocumentWriter 앞 |
| 필수 init 변수 | api_key: Perplexity API 키. PERPLEXITY_API_KEY 환경 변수로 설정 가능 |
| 필수 run 변수 | documents: 문서 목록 |
| 출력 변수 | documents: 임베딩으로 풍부해진 문서 목록. meta: 메타데이터 딕셔너리 |
| API reference | Integrations |
| GitHub 링크 | document_embedder.py |
| 패키지 이름 | perplexity-haystack |
개요
PerplexityDocumentEmbedder가 지원하는 임베딩 모델은 다음과 같아요.
pplx-embed-v1-0.6b(기본값)pplx-embed-v1-4b
이 컴포넌트는 문서 목록을 임베딩할 때 사용해요. 쿼리 같은 단일 문자열을 임베딩하려면 PerplexityTextEmbedder를 사용하세요.
컴포넌트는 기본적으로 PERPLEXITY_API_KEY 환경 변수를 사용해요. 초기화 시 API 키를 직접 전달할 수도 있고요:
from haystack_integrations.components.embedders.perplexity import (
PerplexityDocumentEmbedder,
)
from haystack.utils import Secret
embedder = PerplexityDocumentEmbedder(api_key=Secret.from_token("<your-api-key>"))
메타데이터 임베딩
문서에 의미적으로 유의미한 메타데이터 필드가 있다면, 이를 문서 텍스트와 함께 임베딩해 검색 품질을 높일 수 있어요:
from haystack import Document
from haystack_integrations.components.embedders.perplexity import (
PerplexityDocumentEmbedder,
)
doc = Document(content="some text", meta={"title": "relevant title", "page_number": 18})
embedder = PerplexityDocumentEmbedder(meta_fields_to_embed=["title"])
docs_with_embeddings = embedder.run(documents=[doc])["documents"]
사용법
단독으로 사용하기
from haystack import Document
from haystack_integrations.components.embedders.perplexity import (
PerplexityDocumentEmbedder,
)
doc = Document(content="I love pizza!")
document_embedder = PerplexityDocumentEmbedder()
result = document_embedder.run([doc])
print(result["documents"][0].embedding)
# [0.017020374536514282, -0.023255806416273117, ...]
참고:
PERPLEXITY_API_KEY를 파라미터로 전달하는 대신 환경 변수로 설정하는 것을 권장해요.
파이프라인에서 사용하기
from haystack import Document, Pipeline
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack.components.retrievers.in_memory import InMemoryEmbeddingRetriever
from haystack.components.writers import DocumentWriter
from haystack_integrations.components.embedders.perplexity import (
PerplexityTextEmbedder,
PerplexityDocumentEmbedder,
)
document_store = InMemoryDocumentStore(embedding_similarity_function="cosine")
documents = [
Document(content="My name is Wolfgang and I live in Berlin"),
Document(content="I saw a black horse running"),
Document(content="Germany has many big cities"),
]
indexing_pipeline = Pipeline()
indexing_pipeline.add_component("embedder", PerplexityDocumentEmbedder())
indexing_pipeline.add_component("writer", DocumentWriter(document_store=document_store))
indexing_pipeline.connect("embedder", "writer")
indexing_pipeline.run({"embedder": {"documents": documents}})
query_pipeline = Pipeline()
query_pipeline.add_component("text_embedder", PerplexityTextEmbedder())
query_pipeline.add_component(
"retriever",
InMemoryEmbeddingRetriever(document_store=document_store),
)
query_pipeline.connect("text_embedder.embedding", "retriever.query_embedding")
result = query_pipeline.run({"text_embedder": {"text": "Who lives in Berlin?"}})
print(result["retriever"]["documents"][0])