Enum to map the metric to PostgreSQL vector operators.
inner product
L2 distance
L1 distance
Parses a vector from a string or other representation.
Arguments:
vector_str
(Union[str, Any]
): The string or object representation of a vector.Returns:
List[float]
: A list of floats representing the vector.
Cleans and formats the route name by stripping spaces and replacing them with hyphens.
Arguments:
route_name
(str
): The original route name.Returns:
str
: The cleaned and formatted route name.
Model to represent a record in the Postgres index.
Initializes a new Postgres index record with given data.
Arguments:
data
(dict
): Field values for the record.Converts the record to a dictionary.
Returns:
Dict
: A dictionary representation of the record.
Postgres implementation of Index.
Initializes the Postgres index with the specified parameters.
Arguments:
connection_string
(Optional[str]
): The connection string for the PostgreSQL database.index_prefix
(str
): The prefix for the index table name.index_name
(str
): The name of the index table.dimensions
(int
): The number of dimensions for the vectors.metric
(Metric
): The metric used for vector comparisons.Optional[str]
0 (Optional[str]
): An optional namespace for the index.Optional[str]
2 (Optional[str]
3): Whether to initialize the index asynchronously.Sets up the index by creating the table and vector extension if they do not exist.
Raises:
ValueError
: If the existing table’s vector dimensions do not match the expected dimensions.TypeError
: If the database connection is not established.Adds records to the index.
Arguments:
embeddings
(List[List[float]]
): A list of vector embeddings to add.routes
(List[str]
): A list of route names corresponding to the embeddings.utterances
(List[Any]
): A list of utterances corresponding to the embeddings.function_schemas
(Optional[List[Dict[str, Any]]]
): A list of function schemas corresponding to the embeddings.metadata_list
(List[Dict[str, Any]]
): A list of metadata corresponding to the embeddings.Raises:
List[List[float]]
0: If the vector embeddings being added do not match the expected dimensions.List[List[float]]
1: If the database connection is not established.Asynchronously adds records to the index in batches.
Arguments:
embeddings
: A list of vector embeddings to add.routes
: A list of route names corresponding to the embeddings.utterances
: A list of utterances corresponding to the embeddings.function_schemas
: (Optional) List of function schemas.metadata_list
: (Optional) List of metadata dictionaries.batch_size
: Number of records per batch insert.Raises:
ValueError
: If the vector embeddings don’t match expected dimensions.TypeError
: If connection is not an async Postgres connection.Deletes records with the specified route name.
Arguments:
route_name
(str
): The name of the route to delete records for.Raises:
TypeError
: If the database connection is not established.Asynchronously delete specified route from index if it exists. Returns the IDs
of the vectors deleted.
Arguments:
route_name
(str
): Name of the route to delete.Returns:
list[str]
: List of IDs of the vectors deleted.
Describes the index by returning its type, dimensions, and total vector count.
Returns:
IndexConfig
: An IndexConfig object containing the index’s type, dimensions, and total vector count.
Checks if the index is ready to be used.
Returns:
bool
: True if the index is ready, False otherwise.
Checks if the index is ready to be used.
Returns:
bool
: True if the index is ready, False otherwise.
Searches the index for the query vector and returns the top_k results.
Arguments:
vector
(np.ndarray
): The query vector.top_k
(int
): The number of top results to return.route_filter
(Optional[List[str]]
): Optional list of routes to filter the results by.sparse_vector
(dict[int, float] | SparseEmbedding | None
): Optional sparse vector to filter the results by.Raises:
TypeError
: If the database connection is not established.Returns:
Tuple[np.ndarray, List[str]]
: A tuple containing the scores and routes of the top_k results.
Asynchronously search the index for the query vector and return the top_k results.
Arguments:
vector
(np.ndarray
): The query vector to search for.top_k
(int, optional
): The number of top results to return, defaults to 5.route_filter
(Optional[List[str]], optional
): A list of route names to filter the search results, defaults to None.sparse_vector
(dict[int, float] | SparseEmbedding | None
): An optional sparse vector to include in the query.Raises:
TypeError
: If the database connection is not established.Returns:
Tuple[np.ndarray, List[str]]
: A tuple containing an array of scores and a list of route names.
Deletes all records from the Postgres index.
Raises:
TypeError
: If the database connection is not established.Deletes the entire table for the index.
Raises:
TypeError
: If the database connection is not established.Asynchronously delete the entire table for the index.
Raises:
TypeError
: If the async database connection is not established.Asynchronously get a list of route and utterance objects currently
stored in the index.
Raises:
TypeError
: If the database connection is not established.Returns:
List[Tuple]
: A list of (route_name, utterance) objects.
Returns the total number of vectors in the index. If the index is not initialized
returns 0.
Returns:
The total number of vectors.
Async version of len. Returns the total number of vectors in the index.
Returns:
int
: The total number of vectors.
Closes the psycopg connection if it exists.
Returns True if there is an active and valid psycopg connection, otherwise False.