haive.core.engine.retriever.providers.KNNRetrieverConfig¶
K-Nearest Neighbors Retriever implementation for the Haive framework.
from typing import Any This module provides a configuration class for the KNN (K-Nearest Neighbors) retriever, which uses k-nearest neighbors algorithm for document retrieval based on vector similarity. KNN finds the k most similar documents to a query by computing distances in the embedding space.
The KNNRetriever works by: 1. Embedding documents and queries using a specified embedding model 2. Computing similarity/distance metrics between query and document embeddings 3. Finding the k nearest neighbors based on the distance metric 4. Returning the k most similar documents
This retriever is particularly useful when: - Working with small to medium-sized document collections - Need simple but effective similarity-based retrieval - Want interpretable distance-based ranking - Building baseline vector retrieval systems - Comparing against more complex vector databases
The implementation integrates with LangChain’s KNNRetriever while providing a consistent Haive configuration interface.
Classes¶
Configuration for K-Nearest Neighbors retriever in the Haive framework. |
Module Contents¶
- class haive.core.engine.retriever.providers.KNNRetrieverConfig.KNNRetrieverConfig[source]¶
Bases:
haive.core.engine.retriever.retriever.BaseRetrieverConfig
Configuration for K-Nearest Neighbors retriever in the Haive framework.
This retriever uses the KNN algorithm to find the most similar documents based on vector embeddings and distance metrics.
- retriever_type¶
The type of retriever (always KNN).
- Type:
- documents¶
Documents to index for retrieval.
- Type:
List[Document]
- distance_metric¶
Distance metric to use (“cosine”, “euclidean”, “manhattan”).
- Type:
Examples
>>> from haive.core.engine.retriever import KNNRetrieverConfig >>> from langchain_core.documents import Document >>> >>> # Create documents >>> docs = [ ... Document(page_content="Machine learning trains models on data"), ... Document(page_content="Deep learning uses neural network architectures"), ... Document(page_content="Natural language processing analyzes text patterns") ... ] >>> >>> # Create the KNN retriever config >>> config = KNNRetrieverConfig( ... name="knn_retriever", ... documents=docs, ... k=2, ... distance_metric="cosine", ... embedding_model="sentence-transformers/all-MiniLM-L6-v2" ... ) >>> >>> # Instantiate and use the retriever >>> retriever = config.instantiate() >>> docs = retriever.get_relevant_documents("machine learning training process")
- instantiate()[source]¶
Create a KNN retriever from this configuration.
- Returns:
Instantiated retriever ready for similarity search.
- Return type:
KNNRetriever
- Raises:
ImportError – If required packages are not available.
ValueError – If documents list is empty.