UNPKG

convex

Version:

Client for the Convex Cloud

74 lines 2.95 kB
import { Id, Value } from "../values/value.js"; import { DocumentByInfo, FieldTypeFromFieldPath, GenericDataModel, GenericDocument, GenericTableInfo, GenericVectorIndexConfig, NamedTableInfo, NamedVectorIndex, TableNamesInDataModel, VectorIndexNames } from "./data_model.js"; /** * An object with parameters for performing a vector search against a vector index. * @public */ export interface VectorSearchQuery<TableInfo extends GenericTableInfo, IndexName extends VectorIndexNames<TableInfo>> { /** * The query vector. * * This must have the same length as the `dimensions` of the index. * This vector search will return the IDs of the documents most similar to * this vector. */ vector: number[]; /** * The number of results to return. If specified, must be between 1 and 256 * inclusive. * * @default 10 */ limit?: number; /** * Optional filter expression made up of `q.or` and `q.eq` operating * over the filter fields of the index. * * e.g. `filter: q => q.or(q.eq("genre", "comedy"), q.eq("genre", "drama"))` * * @param q * @returns */ filter?: (q: VectorFilterBuilder<DocumentByInfo<TableInfo>, NamedVectorIndex<TableInfo, IndexName>>) => FilterExpression<boolean>; } export type VectorSearch<DataModel extends GenericDataModel, TableName extends TableNamesInDataModel<DataModel>, IndexName extends VectorIndexNames<NamedTableInfo<DataModel, TableName>>> = (tableName: TableName, indexName: IndexName, query: VectorSearchQuery<NamedTableInfo<DataModel, TableName>, IndexName>) => Promise<Array<{ _id: Id<TableName>; _score: number; }>>; /** * Expressions are evaluated to produce a {@link values.Value} in the course of executing a query. * * To construct an expression, use the {@link VectorFilterBuilder} provided within * {@link VectorSearchQuery}. * * @typeParam T - The type that this expression evaluates to. * @public */ export declare abstract class FilterExpression<T extends Value | undefined> { private _isExpression; private _value; } /** * An interface for defining filters for vector searches. * * This has a similar interface to {@link FilterBuilder}, which is used in * database queries, but supports only the methods that can be efficiently * done in a vector search. * * @public */ export interface VectorFilterBuilder<Document extends GenericDocument, VectorIndexConfig extends GenericVectorIndexConfig> { /** * Is the field at `fieldName` equal to `value` * * @public * */ eq<FieldName extends VectorIndexConfig["filterFields"]>(fieldName: FieldName, value: FieldTypeFromFieldPath<Document, FieldName>): FilterExpression<boolean>; /** * `exprs[0] || exprs[1] || ... || exprs[n]` * * @public */ or(...exprs: Array<FilterExpression<boolean>>): FilterExpression<boolean>; } //# sourceMappingURL=vector_search.d.ts.map