Query vs Get
Chroma has two main retrieval methods:Query: Similarity Search
query() finds the most similar records using vector similarity:
Get: Direct Retrieval
get() retrieves specific records by ID or metadata filters:
Basic Query
Find similar documents using text:Query Parameters
Query Input Types
You can query with different input types:Provide exactly one query input type per call. Don’t mix
query_texts, query_embeddings, query_images, or query_uris.Number of Results
Control how many results to return:Including Fields
Specify which fields to include in results:documents: The document textmetadatas: Metadata for each recorddistances: Similarity distancesembeddings: The embedding vectorsuris: URIs if stored
["documents", "metadatas", "distances"]
Batch Queries
Query multiple queries at once:Filtering Queries
Combine similarity search with metadata filtering:Metadata Filters
Document Filters
Combined Filters
Filter by IDs
Restrict search to specific IDs:Query Results Format
Query results are returned in a batched, columnar format:Get Operations
Retrieve documents directly without similarity search:Get by IDs
Get with Filters
Get with Pagination
Get Results Format
Get results are in columnar format (no batching):The Search API (Advanced)
The Search API provides a more expressive query language for hybrid search, combining vector similarity with complex filtering and ranking.The Search API is experimental and only available in distributed and hosted Chroma.
Basic Search
Key Components
The Search API uses:KorKey: Reference to fields (metadata or special fields)where(): Filter conditionsrank(): Ranking expression (e.g., KNN, RRF)limit(): Paginationselect(): Choose which fields to return
Where Expressions
Build complex filters:Ranking Expressions
Combine multiple ranking strategies:Select Fields
K.DOCUMENT: Document textK.EMBEDDING: Embedding vectorK.METADATA: All metadataK.SCORE: Similarity scoreK.ID: Record ID
Group By
Group results by metadata fields:Read Levels
Control whether to read from the write-ahead log:Search Result Format
Search returns column-major results:Best Practices
Choose appropriate n_results
Choose appropriate n_results
Balance between performance and recall:
Use filters to narrow search space
Use filters to narrow search space
Combine similarity with metadata filters:
Batch queries when possible
Batch queries when possible
Process multiple queries in one call:
Only include needed fields
Only include needed fields
Reduce data transfer by including only required fields:
Next Steps
Metadata
Learn about metadata filtering
Embeddings
Understand how embeddings work
Performance
Optimize query performance
Filtering Guide
Advanced filtering techniques