langchain.js
    Preparing search index...

    MariaDB vector store integration.

    Setup: Install @langchain/community and mariadb.

    If you wish to generate ids, you should also install the uuid package.

    npm install @langchain/community mariadb uuid
    
    Instantiate
    import {
    MariaDBStore,
    DistanceStrategy,
    } from "@langchain/community/vectorstores/mariadb";

    // Or other embeddings
    import { OpenAIEmbeddings } from "@langchain/openai";
    import { PoolConfig } from "mariadb";

    const embeddings = new OpenAIEmbeddings({
    model: "text-embedding-3-small",
    });

    // Sample config
    const config = {
    connectionOptions: {
    host: "127.0.0.1",
    port: 3306,
    user: "myuser",
    password: "ChangeMe",
    database: "api",
    } as PoolConfig,
    tableName: "testlangchainjs",
    columns: {
    idColumnName: "id",
    vectorColumnName: "vector",
    contentColumnName: "content",
    metadataColumnName: "metadata",
    },
    // supported distance strategies: COSINE (default) or EUCLIDEAN
    distanceStrategy: "COSINE" as DistanceStrategy,
    };

    const vectorStore = await MariaDBStore.initialize(embeddings, config);

    Add documents
    import type { Document } from '@langchain/core/documents';

    const document1 = { pageContent: "foo", metadata: { baz: "bar" } };
    const document2 = { pageContent: "thud", metadata: { bar: "baz" } };
    const document3 = { pageContent: "i will be deleted :(", metadata: {} };

    const documents: Document[] = [document1, document2, document3];
    const ids = ["1", "2", "3"];
    await vectorStore.addDocuments(documents, { ids });

    Delete documents
    await vectorStore.delete({ ids: ["3"] });
    

    Similarity search
    const results = await vectorStore.similaritySearch("thud", 1);
    for (const doc of results) {
    console.log(`* ${doc.pageContent} [${JSON.stringify(doc.metadata, null)}]`);
    }
    // Output: * thud [{"baz":"bar"}]

    Similarity search with filter
    const resultsWithFilter = await vectorStore.similaritySearch("thud", 1, {"country": "BG"});

    for (const doc of resultsWithFilter) {
    console.log(`* ${doc.pageContent} [${JSON.stringify(doc.metadata, null)}]`);
    }
    // Output: * foo [{"baz":"bar"}]

    Similarity search with score
    const resultsWithScore = await vectorStore.similaritySearchWithScore("qux", 1);
    for (const [doc, score] of resultsWithScore) {
    console.log(`* [SIM=${score.toFixed(6)}] ${doc.pageContent} [${JSON.stringify(doc.metadata, null)}]`);
    }
    // Output: * [SIM=0.000000] qux [{"bar":"baz","baz":"bar"}]

    As a retriever
    const retriever = vectorStore.asRetriever({
    searchType: "mmr", // Leave blank for standard similarity search
    k: 1,
    });
    const resultAsRetriever = await retriever.invoke("thud");
    console.log(resultAsRetriever);

    // Output: [Document({ metadata: { "baz":"bar" }, pageContent: "thud" })]

    Hierarchy (View Summary)

    Index

    Constructors

    • Parameters

      Returns MariaDBStore

    Properties

    _verbose?: boolean
    chunkSize: number = 500
    collectionId?: string
    collectionMetadata: null | Metadata
    collectionName: string = "langchain"
    collectionTableName?: string
    contentColumnName: string
    distanceStrategy: DistanceStrategy
    idColumnName: string
    metadataColumnName: string
    pool: Pool
    schemaName: null | string
    tableName: string
    vectorColumnName: string

    Accessors

    • get computedCollectionTableName(): string

      Returns string

    • get computedTableName(): string

      Returns string

    Methods

    • Returns string

    • Method to add documents to the vector store. It converts the documents into vectors, and adds them to the store.

      Parameters

      • documents: Document[]

        Array of Document instances.

      • Optionaloptions: { ids?: string[] }

        Optional arguments for adding documents

      Returns Promise<void>

      Promise that resolves when the documents have been added.

    • Method to add vectors to the vector store. It converts the vectors into rows and inserts them into the database.

      Parameters

      • vectors: number[][]

        Array of vectors.

      • documents: Document[]

        Array of Document instances.

      • Optionaloptions: { ids?: string[] }

        Optional arguments for adding documents

      Returns Promise<void>

      Promise that resolves when the vectors have been added.

    • Method to delete documents from the vector store. It deletes the documents that match the provided ids

      Parameters

      • params: { filter?: Record<string, unknown>; ids?: string[] }

      Returns Promise<void>

      Promise that resolves when the documents have been deleted.

      await vectorStore.delete(["id1", "id2"]);
      
    • Close the pool.

      Returns Promise<void>

      Promise that resolves when the pool is terminated.

    • Method to ensure the existence of the collection table in the database. It creates the table if it does not already exist.

      Returns Promise<void>

      Promise that resolves when the collection table has been ensured.

    • Method to ensure the existence of the table in the database. It creates the table if it does not already exist.

      Parameters

      • dimensions: number = 1536

        Number of dimensions in your vector data type. Default to 1536.

      Returns Promise<void>

      Promise that resolves when the table has been ensured.

    • Method to perform a similarity search in the vector store. It returns the k most similar documents to the query vector, along with their similarity scores.

      Parameters

      • query: number[]

        Query vector.

      • k: number

        Number of most similar documents to return.

      • Optionalfilter: Record<string, unknown>

        Optional filter to apply to the search.

      Returns Promise<[Document, number][]>

      Promise that resolves with an array of tuples, each containing a Document and its similarity score.

    • Static method to create a new MariaDBStore instance from an array of Document instances. It adds the documents to the store.

      Parameters

      • docs: Document[]

        Array of Document instances.

      • embeddings: EmbeddingsInterface

        Embeddings instance.

      • dbConfig: MariaDBStoreArgs & { dimensions?: number }

        MariaDBStoreArgs instance.

      Returns Promise<MariaDBStore>

      Promise that resolves with a new instance of MariaDBStore.

    • Static method to create a new MariaDBStore instance from an array of texts and their metadata. It converts the texts into Document instances and adds them to the store.

      Parameters

      • texts: string[]

        Array of texts.

      • metadatas: object | object[]

        Array of metadata objects or a single metadata object.

      • embeddings: EmbeddingsInterface

        Embeddings instance.

      • dbConfig: MariaDBStoreArgs & { dimensions?: number }

        MariaDBStoreArgs instance.

      Returns Promise<MariaDBStore>

      Promise that resolves with a new instance of MariaDBStore.

    • Static method to create a new MariaDBStore instance from a connection. It creates a table if one does not exist, and calls connect to return a new instance of MariaDBStore.

      Parameters

      • embeddings: EmbeddingsInterface

        Embeddings instance.

      • config: MariaDBStoreArgs & { dimensions?: number }

      Returns Promise<MariaDBStore>

      A new instance of MariaDBStore.