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¶

KNNRetrieverConfig

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:

RetrieverType

documents¶

Documents to index for retrieval.

Type:

List[Document]

k¶

Number of nearest neighbors to retrieve (default: 4).

Type:

int

distance_metric¶

Distance metric to use (“cosine”, “euclidean”, “manhattan”).

Type:

str

embedding_model¶

Embedding model to use for vectorization.

Type:

Optional[str]

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")
get_input_fields()[source]¶

Return input field definitions for KNN retriever.

Return type:

dict[str, tuple[type, Any]]

get_output_fields()[source]¶

Return output field definitions for KNN retriever.

Return type:

dict[str, tuple[type, Any]]

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.