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])

더 알아보기 (Learn more)