Skip to content
LangChain4j 文档版本 1.22.0 源快照 42ee3232 更新于 2026-10-14

Google Cloud SQL for PostgreSQL

Cloud SQL 是一项全托管的关系型数据库服务,提供高性能、无缝集成和出色的可扩展性。Cloud SQL 与 PostgreSQL 100% 兼容。扩展你的数据库应用,借助 Cloud SQL 的 Langchain 集成构建 AI 驱动的体验。

本模块实现由 Cloud SQL for PostgreSQL 数据库支撑的 EmbeddingStore。

开始之前

要使用本库,你需要先完成以下 步骤:

  1. 选择或创建一个 Cloud Platform 项目。
  2. 为你的项目启用计费。
  3. 启用 CloudSQL API。
  4. 设置身份验证。

Maven 依赖

xml
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artificatId>langchain4j-community-cloud-sql-pg</artificatId>
    <version>${latest version here}</version>
</dependency>

PostgresEmbeddingStore 用法

使用向量存储来保存已嵌入的文本数据并执行向量搜索。PostgresEmbeddingStore 的实例可通过配置所提供的 Builder 创建,它需要以下内容:

  • PostgresEngine 实例
  • 表名
  • schema 名(可选,默认:"public")
  • content 列(可选,默认:"content")
  • embedding 列(可选,默认:"embedding")
  • id 列(可选,默认:"langchain_id")
  • 元数据列名(可选)
  • 额外的元数据 json 列(可选,默认:"langchain_metadata")
  • 被忽略的元数据列名(可选)
  • 距离策略(可选,默认:DistanceStrategy.COSINE_DISTANCE)
  • 查询选项(可选)

示例用法:

java
import dev.langchain4j.data.document.Metadata;
import dev.langchain4j.data.embedding.Embedding;
import dev.langchain4j.data.segment.TextSegment;
import dev.langchain4j.model.embedding.onnx.allminilml6v2.AllMiniLmL6V2EmbeddingModel;
import dev.langchain4j.model.embedding.EmbeddingModel;
import dev.langchain4j.store.embedding.EmbeddingMatch;
import dev.langchain4j.store.embedding.EmbeddingSearchRequest;
import dev.langchain4j.store.embedding.EmbeddingSearchResult;
import dev.langchain4j.engine.EmbeddingStoreConfig;
import dev.langchain4j.engine.PostgresEngine;
import dev.langchain4j.engine.MetadataColumn;
import dev.langchain4j.store.embedding.cloudsql.PostgresEmbeddingStore;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;

PostgresEngine engine = new PostgresEngine.Builder()
    .projectId("")
    .region("")
    .instance("")
    .database("")
    .build();

PostgresEmbeddingStore store = new PostgresEmbeddingStore.Builder(engine, TABLE_NAME)
    .build();

List<String> testTexts = Arrays.asList("cat", "dog", "car", "truck");
List<Embedding> embeddings = new ArrayList<>();
List<TextSegment> textSegments = new ArrayList<>();
EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel();

for (String text : testTexts) {
    Map<String, Object> metaMap = new HashMap<>();
    metaMap.put("my_metadata", "string");
    Metadata metadata = new Metadata(metaMap);
    textSegments.add(new TextSegment(text, metadata));
    embeddings.add(MyEmbeddingModel.embed(text).content());
}
List<String> ids = store.addAll(embeddings, textSegments);
// search for "cat"
EmbeddingSearchRequest request = EmbeddingSearchRequest.builder()
        .queryEmbedding(embeddings.get(0))
        .maxResults(10)
        .minScore(0.9)
        .build();
List<EmbeddingMatch<TextSegment>> result = store.search(request).matches();
// remove "cat"
store.removeAll(singletonList(result.get(0).embeddingId()));

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。