Files

25 lines
1.1 KiB
Python

"""Implement infrastructure support for dense retriever."""
from __future__ import annotations
from app.domain.retrieval import EmbeddingProvider, RetrievalQuery, Retriever, RetrievedChunk, VectorIndex
# Keep adapter behavior explicit so integration details remain easy to audit.
class DenseRetriever(Retriever):
"""Provide the Dense Retriever retriever."""
def __init__(self, *, embedding_provider: EmbeddingProvider, vector_index: VectorIndex) -> None:
"""Initialize the Dense Retriever instance."""
self.embedding_provider = embedding_provider
self.vector_index = vector_index
def retrieve(self, query: RetrievalQuery) -> list[RetrievedChunk]:
"""Handle retrieve for the Dense Retriever instance."""
query_vector = self.embedding_provider.embed_query(query.query)
return self.vector_index.search(query_vector, query.top_k, query.filters)
def search(self, query: str, top_k: int, filters: str | None = None) -> list[RetrievedChunk]:
"""Handle search for the Dense Retriever instance."""
return self.retrieve(RetrievalQuery(query=query, top_k=top_k, filters=filters))