Class PgVectorEmbeddingStore

java.lang.Object
dev.langchain4j.store.embedding.pgvector.PgVectorEmbeddingStore
All Implemented Interfaces:
EmbeddingStore<TextSegment>

public class PgVectorEmbeddingStore extends Object implements EmbeddingStore<TextSegment>
PGVector EmbeddingStore Implementation

Only cosine similarity is used. Only ivfflat index is used.

  • Constructor Details

    • PgVectorEmbeddingStore

      public PgVectorEmbeddingStore(String host, Integer port, String user, String password, String database, String table, Integer dimension, Boolean useIndex, Integer indexListSize, Boolean createTable, Boolean dropTableFirst)
      All args constructor for PgVectorEmbeddingStore Class
      Parameters:
      host - The database host
      port - The database port
      user - The database user
      password - The database password
      database - The database name
      table - The database table
      dimension - The vector dimension
      useIndex - Should use IVFFlat index
      indexListSize - The IVFFlat number of lists
      createTable - Should create table automatically
      dropTableFirst - Should drop table first, usually for testing
  • Method Details

    • add

      public String add(Embedding embedding)
      Adds a given embedding to the store.
      Specified by:
      add in interface EmbeddingStore<TextSegment>
      Parameters:
      embedding - The embedding to be added to the store.
      Returns:
      The auto-generated ID associated with the added embedding.
    • add

      public void add(String id, Embedding embedding)
      Adds a given embedding to the store.
      Specified by:
      add in interface EmbeddingStore<TextSegment>
      Parameters:
      id - The unique identifier for the embedding to be added.
      embedding - The embedding to be added to the store.
    • add

      public String add(Embedding embedding, TextSegment textSegment)
      Adds a given embedding and the corresponding content that has been embedded to the store.
      Specified by:
      add in interface EmbeddingStore<TextSegment>
      Parameters:
      embedding - The embedding to be added to the store.
      textSegment - Original content that was embedded.
      Returns:
      The auto-generated ID associated with the added embedding.
    • addAll

      public List<String> addAll(List<Embedding> embeddings)
      Adds multiple embeddings to the store.
      Specified by:
      addAll in interface EmbeddingStore<TextSegment>
      Parameters:
      embeddings - A list of embeddings to be added to the store.
      Returns:
      A list of auto-generated IDs associated with the added embeddings.
    • addAll

      public List<String> addAll(List<Embedding> embeddings, List<TextSegment> embedded)
      Adds multiple embeddings and their corresponding contents that have been embedded to the store.
      Specified by:
      addAll in interface EmbeddingStore<TextSegment>
      Parameters:
      embeddings - A list of embeddings to be added to the store.
      embedded - A list of original contents that were embedded.
      Returns:
      A list of auto-generated IDs associated with the added embeddings.
    • findRelevant

      public List<EmbeddingMatch<TextSegment>> findRelevant(Embedding referenceEmbedding, int maxResults, double minScore)
      Finds the most relevant (closest in space) embeddings to the provided reference embedding.
      Specified by:
      findRelevant in interface EmbeddingStore<TextSegment>
      Parameters:
      referenceEmbedding - The embedding used as a reference. Returned embeddings should be relevant (closest) to this one.
      maxResults - The maximum number of embeddings to be returned.
      minScore - The minimum relevance score, ranging from 0 to 1 (inclusive). Only embeddings with a score of this value or higher will be returned.
      Returns:
      A list of embedding matches. Each embedding match includes a relevance score (derivative of cosine distance), ranging from 0 (not relevant) to 1 (highly relevant).