Skip to main content

MetricPgVecOperatorMap Objects

Enum to map the metric to PostgreSQL vector operators.

dotproduct

inner product

euclidean

L2 distance

manhattan

L1 distance

parse_vector

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.

clean_route_name

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.

PostgresIndexRecord Objects

Model to represent a record in the Postgres index.

__init__

Initializes a new Postgres index record with given data. Arguments:
  • data (dict): Field values for the record.

to_dict

Converts the record to a dictionary. Returns: Dict: A dictionary representation of the record.

PostgresIndex Objects

Postgres implementation of Index.

__init__

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.

setup_index

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.

add

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.

aadd

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.

delete

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.

adelete

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.

describe

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.

is_ready

Checks if the index is ready to be used. Returns: bool: True if the index is ready, False otherwise.

ais_ready

Checks if the index is ready to be used. Returns: bool: True if the index is ready, False otherwise.

query

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.

aquery

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.

delete_all

Deletes all records from the Postgres index. Raises:
  • TypeError: If the database connection is not established.

delete_index

Deletes the entire table for the index. Raises:
  • TypeError: If the database connection is not established.

adelete_index

Asynchronously delete the entire table for the index. Raises:
  • TypeError: If the async database connection is not established.

aget_routes

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.

__len__

Returns the total number of vectors in the index. If the index is not initialized returns 0. Returns: The total number of vectors.

alen

Async version of len. Returns the total number of vectors in the index. Returns: int: The total number of vectors.

close

Closes the psycopg connection if it exists.

has_connection

Returns True if there is an active and valid psycopg connection, otherwise False.