langchain.js
    Preparing search index...

    Supabase vector store integration.

    Setup: Install @langchain/community and @supabase/supabase-js.

    npm install @langchain/community @supabase/supabase-js
    

    See https://js.langchain.com/docs/integrations/vectorstores/supabase for instructions on how to set up your Supabase instance.

    Instantiate
    import { SupabaseVectorStore } from "@langchain/community/vectorstores/supabase";
    import { OpenAIEmbeddings } from "@langchain/openai";

    import { createClient } from "@supabase/supabase-js";

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

    const supabaseClient = createClient(
    process.env.SUPABASE_URL,
    process.env.SUPABASE_PRIVATE_KEY
    );

    const vectorStore = new SupabaseVectorStore(embeddings, {
    client: supabaseClient,
    tableName: "documents",
    queryName: "match_documents",
    });

    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, { baz: "bar" });

    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 SupabaseVectorStore

    Properties

    client: SupabaseClient
    queryName: string
    tableName: string
    upsertBatchSize: number = 500

    Methods

    • Parameters

      Returns Promise<SearchEmbeddingsResponse[]>

    • Returns string

    • Adds documents to the vector store.

      Parameters

      • documents: Document[]

        The documents to add.

      • Optionaloptions: { ids?: string[] | number[] }

        Optional parameters for adding the documents.

      Returns Promise<string[]>

      A promise that resolves when the documents have been added.

    • Adds vectors to the vector store.

      Parameters

      • vectors: number[][]

        The vectors to add.

      • documents: Document[]

        The documents associated with the vectors.

      • Optionaloptions: { ids?: string[] | number[] }

        Optional parameters for adding the vectors.

      Returns Promise<string[]>

      A promise that resolves with the IDs of the added vectors when the vectors have been added.

    • Deletes vectors from the vector store.

      Parameters

      • params: { ids: string[] | number[] }

        The parameters for deleting vectors.

      Returns Promise<void>

      A promise that resolves when the vectors have been deleted.

    • Return documents selected using the maximal marginal relevance. Maximal marginal relevance optimizes for similarity to the query AND diversity among selected documents.

      Parameters

      • query: string

        Text to look up documents similar to.

      • options: MaxMarginalRelevanceSearchOptions<this["FilterType"]>
        • k

          Number of documents to return.

        • fetchK=20-

          Number of documents to fetch before passing to the MMR algorithm.

        • lambda=0.5

          Number between 0 and 1 that determines the degree of diversity among the results, where 0 corresponds to maximum diversity and 1 to minimum diversity.

        • filter

          Optional filter to apply to the search.

      Returns Promise<Document[]>

      • List of documents selected by maximal marginal relevance.
    • Performs a similarity search on the vector store.

      Parameters

      Returns Promise<[Document, number][]>

      A promise that resolves with the search results when the search is complete.

    • Creates a new SupabaseVectorStore instance from an array of documents.

      Parameters

      • docs: Document[]

        The documents to create the instance from.

      • embeddings: EmbeddingsInterface

        The embeddings to use.

      • dbConfig: SupabaseLibArgs

        The configuration for the Supabase database.

      Returns Promise<SupabaseVectorStore>

      A promise that resolves with a new SupabaseVectorStore instance when the instance has been created.

    • Creates a new SupabaseVectorStore instance from an existing index.

      Parameters

      • embeddings: EmbeddingsInterface

        The embeddings to use.

      • dbConfig: SupabaseLibArgs

        The configuration for the Supabase database.

      Returns Promise<SupabaseVectorStore>

      A promise that resolves with a new SupabaseVectorStore instance when the instance has been created.

    • Creates a new SupabaseVectorStore instance from an array of texts.

      Parameters

      • texts: string[]

        The texts to create documents from.

      • metadatas: object | object[]

        The metadata for the documents.

      • embeddings: EmbeddingsInterface

        The embeddings to use.

      • dbConfig: SupabaseLibArgs

        The configuration for the Supabase database.

      Returns Promise<SupabaseVectorStore>

      A promise that resolves with a new SupabaseVectorStore instance when the instance has been created.