Toggle Menu
Prev Up Next

# `langchain_community.vectorstores.tidb_vector`.TiDBVectorStore

class langchain_community.vectorstores.tidb_vector.TiDBVectorStore(connection_string: str, embedding_function: Embeddings, table_name: str = 'langchain_vector', distance_strategy: str = 'cosine', *, engine_args: Optional[Dict[str, Any]] = None, drop_existing_table: bool = False, **kwargs: Any)

  TiDB Vector Store.

  Initialize a TiDB Vector Store in Langchain with a flexible and standardized table structure for storing vector data which remains fixed regardless of the dynamic table name setting.

  The vector table schema includes: - ‘id’: a UUID for each entry. - ‘embedding’: stores vector data in a VectorType column. - ‘document’: a Text column for the original data or additional information. - ‘meta’: a JSON column for flexible metadata storage. - ‘create_time’ and ‘update_time’: timestamp columns for tracking data changes.

  This table structure caters to general use cases and complex scenarios where the table serves as a semantic layer for advanced data integration and analysis, leveraging SQL for join queries.

  Parameters

    - connection_string (str) – The connection string for the TiDB database, format: “mysql+pymysql://root@34.212.137.91:4000/test”.

    - embedding_function (Embeddings) – The embedding function used to generate embeddings.

    - table_name (str, optional) – The name of the table that will be used to store vector data. If you do not provide a table name, a default table named langchain_vector will be created automatically.

    - distance_strategy (str) – The strategy used for similarity search, defaults to “cosine”, valid values: “l2”, “cosine”, “inner_product”.

    - engine_args (Optional[Dict]) – Additional arguments for the database engine, defaults to None.

    - drop_existing_table (bool) – Drop the existing TiDB table before initializing, defaults to False.

    - **kwargs (Any) – Additional keyword arguments.

  Examples

  from langchain_community.vectorstores import TiDBVectorStore from langchain_openai import OpenAIEmbeddings

  embeddingFunc = OpenAIEmbeddings() CONNECTION_STRING = “mysql+pymysql://root@34.212.137.91:4000/test”

  vs = TiDBVector.from_texts(

    embedding=embeddingFunc, texts = […, …], connection_string=CONNECTION_STRING, distance_strategy=”l2”, table_name=”tidb_vector_langchain”,

  )

  query = “What did the president say about Ketanji Brown Jackson” docs = db.similarity_search_with_score(query)

  Attributes

  `distance_strategy` | Returns the current distance strategy.
  `embeddings` | Return the function used to generate embeddings.
  `tidb_vector_client` | Return the TiDB Vector Client.

  Methods

  `__init__`(connection_string, embedding_function) | Initialize a TiDB Vector Store in Langchain with a flexible and standardized table structure for storing vector data which remains fixed regardless of the dynamic table name setting.
  `aadd_documents`(documents, **kwargs) | Run more documents through the embeddings and add to the vectorstore.
  `aadd_texts`(texts[, metadatas]) | Run more texts through the embeddings and add to the vectorstore.
  `add_documents`(documents, **kwargs) | Run more documents through the embeddings and add to the vectorstore.
  `add_texts`(texts[, metadatas, ids]) | Add texts to TiDB Vector Store.
  `adelete`([ids]) | Delete by vector ID or other criteria.
  `afrom_documents`(documents, embedding, **kwargs) | Return VectorStore initialized from documents and embeddings.
  `afrom_texts`(texts, embedding[, metadatas]) | Return VectorStore initialized from texts and embeddings.
  `amax_marginal_relevance_search`(query[, k, ...]) | Return docs selected using the maximal marginal relevance.
  `amax_marginal_relevance_search_by_vector`(...) | Return docs selected using the maximal marginal relevance.
  `as_retriever`(**kwargs) | Return VectorStoreRetriever initialized from this VectorStore.
  `asearch`(query, search_type, **kwargs) | Return docs most similar to query using specified search type.
  `asimilarity_search`(query[, k]) | Return docs most similar to query.
  `asimilarity_search_by_vector`(embedding[, k]) | Return docs most similar to embedding vector.
  `asimilarity_search_with_relevance_scores`(query) | Return docs and relevance scores in the range [0, 1], asynchronously.
  `asimilarity_search_with_score`(*args, **kwargs) | Run similarity search with distance asynchronously.
  `delete`([ids]) | Delete vector data from the TiDB Vector Store.
  `drop_vectorstore`() | Drop the Vector Store from the TiDB database.
  `from_documents`(documents, embedding, **kwargs) | Return VectorStore initialized from documents and embeddings.
  `from_existing_vector_table`(embedding, ...[, ...]) | Create a VectorStore instance from an existing TiDB Vector Store in TiDB.
  `from_texts`(texts, embedding[, metadatas]) | Create a VectorStore from a list of texts.
  `max_marginal_relevance_search`(query[, k, ...]) | Return docs selected using the maximal marginal relevance.
  `max_marginal_relevance_search_by_vector`(...) | Return docs selected using the maximal marginal relevance.
  `search`(query, search_type, **kwargs) | Return docs most similar to query using specified search type.
  `similarity_search`(query[, k, filter]) | Perform a similarity search using the given query.
  `similarity_search_by_vector`(embedding[, k]) | Return docs most similar to embedding vector.
  `similarity_search_with_relevance_scores`(query) | Return docs and relevance scores in the range [0, 1].
  `similarity_search_with_score`(query[, k, filter]) | Perform a similarity search with score based on the given query.

  __init__(connection_string: str, embedding_function: Embeddings, table_name: str = 'langchain_vector', distance_strategy: str = 'cosine', *, engine_args: Optional[Dict[str, Any]] = None, drop_existing_table: bool = False, **kwargs: Any) → None

    Initialize a TiDB Vector Store in Langchain with a flexible and standardized table structure for storing vector data which remains fixed regardless of the dynamic table name setting.

    The vector table schema includes: - ‘id’: a UUID for each entry. - ‘embedding’: stores vector data in a VectorType column. - ‘document’: a Text column for the original data or additional information. - ‘meta’: a JSON column for flexible metadata storage. - ‘create_time’ and ‘update_time’: timestamp columns for tracking data changes.

    This table structure caters to general use cases and complex scenarios where the table serves as a semantic layer for advanced data integration and analysis, leveraging SQL for join queries.

    Parameters

      - connection_string (str) – The connection string for the TiDB database, format: “mysql+pymysql://root@34.212.137.91:4000/test”.

      - embedding_function (Embeddings) – The embedding function used to generate embeddings.

      - table_name (str, optional) – The name of the table that will be used to store vector data. If you do not provide a table name, a default table named langchain_vector will be created automatically.

      - distance_strategy (str) – The strategy used for similarity search, defaults to “cosine”, valid values: “l2”, “cosine”, “inner_product”.

      - engine_args (Optional[Dict]) – Additional arguments for the database engine, defaults to None.

      - drop_existing_table (bool) – Drop the existing TiDB table before initializing, defaults to False.

      - **kwargs (Any) – Additional keyword arguments.

    Return type

      None

    Examples

    from langchain_community.vectorstores import TiDBVectorStore from langchain_openai import OpenAIEmbeddings

    embeddingFunc = OpenAIEmbeddings() CONNECTION_STRING = “mysql+pymysql://root@34.212.137.91:4000/test”

    vs = TiDBVector.from_texts(

      embedding=embeddingFunc, texts = […, …], connection_string=CONNECTION_STRING, distance_strategy=”l2”, table_name=”tidb_vector_langchain”,

    )

    query = “What did the president say about Ketanji Brown Jackson” docs = db.similarity_search_with_score(query)

  async aadd_documents(documents: List[Document], **kwargs: Any) → List[str]

    Run more documents through the embeddings and add to the vectorstore.

    Parameters

      - (List[Document] (documents) – Documents to add to the vectorstore.

      - documents (List[Document]) –

      - kwargs (Any) –

    Returns

      List of IDs of the added texts.

    Return type

      List[str]

  async aadd_texts(texts: Iterable[str], metadatas: Optional[List[dict]] = None, **kwargs: Any) → List[str]

    Run more texts through the embeddings and add to the vectorstore.

    Parameters

      - texts (Iterable[str]) –

      - metadatas (Optional[List[dict]]) –

      - kwargs (Any) –

    Return type

      List[str]

  add_documents(documents: List[Document], **kwargs: Any) → List[str]

    Run more documents through the embeddings and add to the vectorstore.

    Parameters

      - (List[Document] (documents) – Documents to add to the vectorstore.

      - documents (List[Document]) –

      - kwargs (Any) –

    Returns

      List of IDs of the added texts.

    Return type

      List[str]

  add_texts(texts: Iterable[str], metadatas: Optional[List[dict]] = None, ids: Optional[List[str]] = None, **kwargs: Any) → List[str]

    Add texts to TiDB Vector Store.

    Parameters

      - texts (Iterable[str]) – The texts to be added.

      - metadatas (Optional[List[dict]]) – The metadata associated with each text, Defaults to None.

      - ids (Optional[List[str]]) – The IDs to be assigned to each text, Defaults to None, will be generated if not provided.

      - kwargs (Any) –

    Returns

      The IDs assigned to the added texts.

    Return type

      List[str]

  async adelete(ids: Optional[List[str]] = None, **kwargs: Any) → Optional[bool]

    Delete by vector ID or other criteria.

    Parameters

      - ids (Optional[List[str]]) – List of ids to delete.

      - **kwargs (Any) – Other keyword arguments that subclasses might use.

    Returns

      True if deletion is successful, False otherwise, None if not implemented.

    Return type

      Optional[bool]

  async classmethod afrom_documents(documents: List[Document], embedding: Embeddings, **kwargs: Any) → VST

    Return VectorStore initialized from documents and embeddings.

    Parameters

      - documents (List[Document]) –

      - embedding (Embeddings) –

      - kwargs (Any) –

    Return type

      VST

  async classmethod afrom_texts(texts: List[str], embedding: Embeddings, metadatas: Optional[List[dict]] = None, **kwargs: Any) → VST

    Return VectorStore initialized from texts and embeddings.

    Parameters

      - texts (List[str]) –

      - embedding (Embeddings) –

      - metadatas (Optional[List[dict]]) –

      - kwargs (Any) –

    Return type

      VST

  async amax_marginal_relevance_search(query: str, k: int = 4, fetch_k: int = 20, lambda_mult: float = 0.5, **kwargs: Any) → List[Document]

    Return docs selected using the maximal marginal relevance.

    Maximal marginal relevance optimizes for similarity to query AND diversity among selected documents.

    Parameters

      - query (str) – Text to look up documents similar to.

      - k (int) – Number of Documents to return. Defaults to 4.

      - fetch_k (int) – Number of Documents to fetch to pass to MMR algorithm.

      - lambda_mult (float) – Number between 0 and 1 that determines the degree of diversity among the results with 0 corresponding to maximum diversity and 1 to minimum diversity. Defaults to 0.5.

      - kwargs (Any) –

    Returns

      List of Documents selected by maximal marginal relevance.

    Return type

      List[Document]

  async amax_marginal_relevance_search_by_vector(embedding: List[float], k: int = 4, fetch_k: int = 20, lambda_mult: float = 0.5, **kwargs: Any) → List[Document]

    Return docs selected using the maximal marginal relevance.

    Parameters

      - embedding (List[float]) –

      - k (int) –

      - fetch_k (int) –

      - lambda_mult (float) –

      - kwargs (Any) –

    Return type

      List[Document]

  as_retriever(**kwargs: Any) → VectorStoreRetriever

    Return VectorStoreRetriever initialized from this VectorStore.

    Parameters

      - search_type (Optional[str]) – Defines the type of search that the Retriever should perform. Can be “similarity” (default), “mmr”, or “similarity_score_threshold”.

      - search_kwargs (Optional[Dict]) –

        Keyword arguments to pass to the search function. Can include things like:

        > k: Amount of documents to return (Default: 4) score_threshold: Minimum relevance threshold

        > > for similarity_score_threshold

        > fetch_k: Amount of documents to pass to MMR algorithm (Default: 20) lambda_mult: Diversity of results returned by MMR;

        > > 1 for minimum diversity and 0 for maximum. (Default: 0.5)

        > filter: Filter by document metadata

      - kwargs (Any) –

    Returns

      Retriever class for VectorStore.

    Return type

      VectorStoreRetriever

    Examples:

        # Retrieve more documents with higher diversity
        # Useful if your dataset has many similar documents
        docsearch.as_retriever(
            search_type="mmr",
            search_kwargs={'k': 6, 'lambda_mult': 0.25}
        )

        # Fetch more documents for the MMR algorithm to consider
        # But only return the top 5
        docsearch.as_retriever(
            search_type="mmr",
            search_kwargs={'k': 5, 'fetch_k': 50}
        )

        # Only retrieve documents that have a relevance score
        # Above a certain threshold
        docsearch.as_retriever(
            search_type="similarity_score_threshold",
            search_kwargs={'score_threshold': 0.8}
        )

        # Only get the single most similar document from the dataset
        docsearch.as_retriever(search_kwargs={'k': 1})

        # Use a filter to only retrieve documents from a specific paper
        docsearch.as_retriever(
            search_kwargs={'filter': {'paper_title':'GPT-4 Technical Report'}}
        )

  async asearch(query: str, search_type: str, **kwargs: Any) → List[Document]

    Return docs most similar to query using specified search type.

    Parameters

      - query (str) –

      - search_type (str) –

      - kwargs (Any) –

    Return type

      List[Document]

  async asimilarity_search(query: str, k: int = 4, **kwargs: Any) → List[Document]

    Return docs most similar to query.

    Parameters

      - query (str) –

      - k (int) –

      - kwargs (Any) –

    Return type

      List[Document]

  async asimilarity_search_by_vector(embedding: List[float], k: int = 4, **kwargs: Any) → List[Document]

    Return docs most similar to embedding vector.

    Parameters

      - embedding (List[float]) –

      - k (int) –

      - kwargs (Any) –

    Return type

      List[Document]

  async asimilarity_search_with_relevance_scores(query: str, k: int = 4, **kwargs: Any) → List[Tuple[Document, float]]

    Return docs and relevance scores in the range [0, 1], asynchronously.

    0 is dissimilar, 1 is most similar.

    Parameters

      - query (str) – input text

      - k (int) – Number of Documents to return. Defaults to 4.

      - **kwargs (Any) –

        kwargs to be passed to similarity search. Should include: score_threshold: Optional, a floating point value between 0 to 1 to

        > filter the resulting set of retrieved docs

    Returns

      List of Tuples of (doc, similarity_score)

    Return type

      List[Tuple[Document, float]]

  async asimilarity_search_with_score(*args: Any, **kwargs: Any) → List[Tuple[Document, float]]

    Run similarity search with distance asynchronously.

    Parameters

      - args (Any) –

      - kwargs (Any) –

    Return type

      List[Tuple[Document, float]]

  delete(ids: Optional[List[str]] = None, **kwargs: Any) → None

    Delete vector data from the TiDB Vector Store.

    Parameters

      - ids (Optional[List[str]]) – A list of vector IDs to delete.

      - **kwargs – Additional keyword arguments.

    Return type

      None

  drop_vectorstore() → None

    Drop the Vector Store from the TiDB database.

    Return type

      None

  classmethod from_documents(documents: List[Document], embedding: Embeddings, **kwargs: Any) → VST

    Return VectorStore initialized from documents and embeddings.

    Parameters

      - documents (List[Document]) –

      - embedding (Embeddings) –

      - kwargs (Any) –

    Return type

      VST

  classmethod from_existing_vector_table(embedding: Embeddings, connection_string: str, table_name: str, distance_strategy: str = 'cosine', *, engine_args: Optional[Dict[str, Any]] = None, **kwargs: Any) → VectorStore

    Create a VectorStore instance from an existing TiDB Vector Store in TiDB.

    Parameters

      - embedding (Embeddings) – The function to use for generating embeddings.

      - connection_string (str) – The connection string for the TiDB database, format: “mysql+pymysql://root@34.212.137.91:4000/test”.

      - table_name (str, optional) – The name of table used to store vector data, defaults to “langchain_vector”.

      - distance_strategy (str) – The distance strategy used for similarity search, defaults to “cosine”, allowed: “l2”, “cosine”, ‘inner_product’.

      - engine_args (Optional[Dict[str, Any]]) – Additional arguments for the underlying database engine, defaults to None.

      - **kwargs (Any) – Additional keyword arguments.

    Returns

      The VectorStore instance.

    Return type

      VectorStore

    Raises

      NoSuchTableError – If the specified table does not exist in the TiDB.

  classmethod from_texts(texts: List[str], embedding: Embeddings, metadatas: Optional[List[dict]] = None, **kwargs: Any) → TiDBVectorStore

    Create a VectorStore from a list of texts.

    Parameters

      - texts (List[str]) – The list of texts to be added to the TiDB Vector.

      - embedding (Embeddings) – The function to use for generating embeddings.

      - metadatas (Optional[List[dict]]) – The list of metadata dictionaries corresponding to each text, defaults to None.

      - **kwargs (Any) –

        Additional keyword arguments. connection_string (str): The connection string for the TiDB database,

        > format: “mysql+pymysql://root@34.212.137.91:4000/test”.

        table_name (str, optional): The name of table used to store vector data,

          defaults to “langchain_vector”.

        distance_strategy: The distance strategy used for similarity search,

          defaults to “cosine”, allowed: “l2”, “cosine”, “inner_product”.

        ids (Optional[List[str]]): The list of IDs corresponding to each text,

          defaults to None.

        engine_args: Additional arguments for the underlying database engine,

          defaults to None.

        drop_existing_table: Drop the existing TiDB table before initializing,

          defaults to False.

    Returns

      The created TiDB Vector Store.

    Return type

      VectorStore

  max_marginal_relevance_search(query: str, k: int = 4, fetch_k: int = 20, lambda_mult: float = 0.5, **kwargs: Any) → List[Document]

    Return docs selected using the maximal marginal relevance.

    Maximal marginal relevance optimizes for similarity to query AND diversity among selected documents.

    Parameters

      - query (str) – Text to look up documents similar to.

      - k (int) – Number of Documents to return. Defaults to 4.

      - fetch_k (int) – Number of Documents to fetch to pass to MMR algorithm.

      - lambda_mult (float) – Number between 0 and 1 that determines the degree of diversity among the results with 0 corresponding to maximum diversity and 1 to minimum diversity. Defaults to 0.5.

      - kwargs (Any) –

    Returns

      List of Documents selected by maximal marginal relevance.

    Return type

      List[Document]

  max_marginal_relevance_search_by_vector(embedding: List[float], k: int = 4, fetch_k: int = 20, lambda_mult: float = 0.5, **kwargs: Any) → List[Document]

    Return docs selected using the maximal marginal relevance.

    Maximal marginal relevance optimizes for similarity to query AND diversity among selected documents.

    Parameters

      - embedding (List[float]) – Embedding to look up documents similar to.

      - k (int) – Number of Documents to return. Defaults to 4.

      - fetch_k (int) – Number of Documents to fetch to pass to MMR algorithm.

      - lambda_mult (float) – Number between 0 and 1 that determines the degree of diversity among the results with 0 corresponding to maximum diversity and 1 to minimum diversity. Defaults to 0.5.

      - kwargs (Any) –

    Returns

      List of Documents selected by maximal marginal relevance.

    Return type

      List[Document]

  search(query: str, search_type: str, **kwargs: Any) → List[Document]

    Return docs most similar to query using specified search type.

    Parameters

      - query (str) –

      - search_type (str) –

      - kwargs (Any) –

    Return type

      List[Document]

  similarity_search(query: str, k: int = 4, filter: Optional[dict] = None, **kwargs: Any) → List[Document]

    Perform a similarity search using the given query.

    Parameters

      - query (str) – The query string.

      - k (int, optional) – The number of results to retrieve. Defaults to 4.

      - filter (dict, optional) – A filter to apply to the search results. Defaults to None.

      - **kwargs – Additional keyword arguments.

    Returns

      A list of Document objects representing the search results.

    Return type

      List[Document]

  similarity_search_by_vector(embedding: List[float], k: int = 4, **kwargs: Any) → List[Document]

    Return docs most similar to embedding vector.

    Parameters

      - embedding (List[float]) – Embedding to look up documents similar to.

      - k (int) – Number of Documents to return. Defaults to 4.

      - kwargs (Any) –

    Returns

      List of Documents most similar to the query vector.

    Return type

      List[Document]

  similarity_search_with_relevance_scores(query: str, k: int = 4, **kwargs: Any) → List[Tuple[Document, float]]

    Return docs and relevance scores in the range [0, 1].

    0 is dissimilar, 1 is most similar.

    Parameters

      - query (str) – input text

      - k (int) – Number of Documents to return. Defaults to 4.

      - **kwargs (Any) –

        kwargs to be passed to similarity search. Should include: score_threshold: Optional, a floating point value between 0 to 1 to

        > filter the resulting set of retrieved docs

    Returns

      List of Tuples of (doc, similarity_score)

    Return type

      List[Tuple[Document, float]]

  similarity_search_with_score(query: str, k: int = 5, filter: Optional[dict] = None, **kwargs: Any) → List[Tuple[Document, float]]

    Perform a similarity search with score based on the given query.

    Parameters

      - query (str) – The query string.

      - k (int, optional) – The number of results to return. Defaults to 5.

      - filter (dict, optional) – A filter to apply to the search results. Defaults to None.

      - **kwargs – Additional keyword arguments.

    Returns

      A list of tuples containing relevant documents and their similarity scores.

    Return type

      List[Tuple[Document, float]]

# Examples using TiDBVectorStore

- Here we useimport getpass

- TiDB