Skip to Content
ConceptsSearch

Search

Endee uses Approximate Nearest Neighbor (ANN) search to find the most similar objects to a query vector. This page covers query parameters, hybrid search modes, and the structure of query results.

Query Parameters

ParameterDescriptionDefault
VectorQuery vector (must match the collection dimension)Required
Top KNumber of results to return10
Ef_SearchQuery-time search quality parameter — controls how many candidates are explored per search (higher = better recall, slower). Independent of the build-time EF Construction parameter.128
Include VectorsInclude the stored vector data in resultsfalse
FilterFilter conditions to restrict results (see Filtering)None
Prefilter Cardinality ThresholdTune when prefiltering kicks in (see Filter Tuning)10,000
Filter Boost PercentageExpand the candidate pool when filtering reduces results0
collection = client.get_collection(name="my_collection") results = collection.query( vector=[0.12, -0.34, 0.89, ...], top_k=5, ef=128, include_vectors=False )

Increasing ef improves recall at the cost of latency. For most use cases, the default 128 is a good starting point.

Hybrid Query Parameters

For hybrid collections, include sparse query components alongside the dense query object:

ParameterDescriptionDefault
Sparse IndicesNon-zero term positions in the sparse query objectRequired
Sparse ValuesWeights corresponding to each sparse index positionRequired
dense_rrf_weightWeight given to the dense ranking in RRF merging (0.0 → full sparse, 1.0 → full dense, 0.5 → equal)0.5
rank_rrf_constantSmoothing constant that dampens the effect of top ranks; higher values flatten the score curve60
results = collection.query( vector=[0.12, -0.34, 0.89, ...], sparse_indices=[4821, 19043, 73201], sparse_values=[1.2, 0.9, 1.1], top_k=5 )

Query Modes

Hybrid collections support three query modes:

ModeProvideUse When
Dense onlyDense vector onlyPure semantic similarity search
Sparse onlysparse_indices + sparse_values onlyPure keyword-based search
HybridBoth dense and sparse componentsCombined semantic + keyword search
# Dense only results = collection.query(vector=[...], top_k=5) # Sparse only results = collection.query( sparse_indices=[4821, 19043], sparse_values=[1.2, 0.9], top_k=5 ) # Hybrid results = collection.query( vector=[...], sparse_indices=[4821, 19043], sparse_values=[1.2, 0.9], top_k=5 )

Result Fields

Each result in a query response contains:

FieldDescription
IDUnique identifier of the matched object
SimilaritySimilarity score (higher means more similar)
DistanceDistance score (lower means more similar)
MetaMetadata object attached to the object
NormObject norm value
VectorVector data (only included when Include Vectors is true)
results = collection.query(vector=[...], top_k=3, include_vectors=True) for item in results: print(f"ID: {item['id']}") print(f"Similarity: {item['similarity']:.4f}") print(f"Meta: {item['meta']}") print(f"Vector: {item['vector'][:3]}...")