Skip to content
Spring AI 文档版本 2.1.0-SNAPSHOT 源快照 666d87bd 更新于 2026-10-16

Amazon Bedrock 知识库

本节引导你设置 Amazon Bedrock 知识库 VectorStore,以针对一个预先配置好的知识库执行相似度搜索。

Amazon Bedrock 知识库 是一个全托管的 RAG(检索增强生成)能力,让你能把基础模型连接到你的数据源。与其他向量库不同,Bedrock 知识库在内部处理文档摄取、分块和嵌入。

前置条件

  1. 一个已启用 Bedrock 访问的 AWS 账户
  2. 一个已配置、且至少有一个数据源完成同步的 Bedrock 知识库
  3. 已配置的 AWS 凭据(通过环境变量、AWS 配置文件或 IAM 角色)

NOTE

该向量库是只读的。文档通过知识库的数据源同步流程管理,而非通过 add() 或 delete() 方法。

自动配置

Spring AI 为 Bedrock 知识库向量库提供 Spring Boot 自动配置。 要启用它,请将以下依赖添加到你的项目的 Maven pom.xml 文件:

xml
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-vector-store-bedrock-knowledgebase</artifactId>
</dependency>

或添加到你的 Gradle build.gradle 构建文件:

groovy
dependencies {
    implementation 'org.springframework.ai:spring-ai-starter-vector-store-bedrock-knowledgebase'
}

TIP

参见 依赖管理 一节,把 Spring AI BOM 添加到你的构建文件。

NOTE

与其他向量库不同,Bedrock 知识库不需要 EmbeddingModel bean。知识库会在数据源同步期间在内部处理嵌入。

要连接到你的知识库,通过 Spring Boot 的 application.properties 提供知识库 ID:

properties
spring.ai.vectorstore.bedrock-knowledge-base.knowledge-base-id=YOUR_KNOWLEDGE_BASE_ID
spring.ai.vectorstore.bedrock-knowledge-base.region=us-east-1

或通过环境变量:

bash
export SPRING_AI_VECTORSTORE_BEDROCK_KNOWLEDGE_BASE_KNOWLEDGE_BASE_ID=YOUR_KNOWLEDGE_BASE_ID

现在你可以在应用中自动装配该向量库:

java
@Autowired VectorStore vectorStore;

// ...

// Retrieve documents similar to a query
List<Document> results = vectorStore.similaritySearch(
    SearchRequest.builder()
        .query("What is the return policy?")
        .topK(5)
        .build());

配置属性

你可以在 Spring Boot 配置中使用以下属性来定制 Bedrock 知识库向量库。

属性
描述
默认值
spring.ai.vectorstore.bedrock-knowledge-base.knowledge-base-id
要查询的 Bedrock 知识库 ID
-
spring.ai.vectorstore.bedrock-knowledge-base.region
Bedrock 服务的 AWS 区域
SDK 默认
spring.ai.vectorstore.bedrock-knowledge-base.top-k
要返回的结果数
5
spring.ai.vectorstore.bedrock-knowledge-base.similarity-threshold
最低相似度分数(0.0 到 1.0)
0.0
spring.ai.vectorstore.bedrock-knowledge-base.search-type
搜索类型:SEMANTIC 或 HYBRID
null(KB 默认)
spring.ai.vectorstore.bedrock-knowledge-base.reranking-model-arn
Bedrock 重排序模型的 ARN
null(禁用)

搜索类型

Bedrock 知识库支持两种搜索类型:

  • SEMANTIC - 仅向量相似度搜索(默认)
  • HYBRID - 将语义搜索与关键词搜索相结合

NOTE

HYBRID 搜索仅对基于 OpenSearch 的向量库可用。S3 Vectors、Aurora PostgreSQL 及其他向量库类型只支持 SEMANTIC 搜索。

properties
spring.ai.vectorstore.bedrock-knowledge-base.search-type=HYBRID

重排序

你可以通过启用一个 Bedrock 重排序模型来提升搜索相关性:

properties
spring.ai.vectorstore.bedrock-knowledge-base.reranking-model-arn=arn:aws:bedrock:us-west-2::foundation-model/amazon.rerank-v1:0

可用的重排序模型:

  • Amazon Rerank 1.0 - 在 us-west-2、ap-northeast-1、ca-central-1、eu-central-1 可用
  • Cohere Rerank 3.5 - 需要 AWS Marketplace 订阅

元数据过滤

你可以在 Bedrock 知识库向量库上利用通用、可移植的元数据过滤器。

例如,你可以使用文本表达式语言:

java
vectorStore.similaritySearch(
    SearchRequest.builder()
        .query("travel policy")
        .topK(5)
        .similarityThreshold(0.5)
        .filterExpression("department == 'HR' && year >= 2024")
        .build());

或以编程方式使用 Filter.Expression DSL:

java
FilterExpressionBuilder b = new FilterExpressionBuilder();

vectorStore.similaritySearch(
    SearchRequest.builder()
        .query("travel policy")
        .topK(5)
        .filterExpression(b.and(
            b.eq("department", "HR"),
            b.gte("year", 2024)).build())
        .build());

受支持的过滤运算符

Spring AI
Bedrock
描述
EQ
equals
等于
NE
notEquals
不等于
GT
greaterThan
大于
GTE
greaterThanOrEquals
大于等于
LT
lessThan
小于
LTE
lessThanOrEquals
小于等于
IN
in
值在列表中
NIN
notIn
值不在列表中
AND
andAll
逻辑与
OR
orAll
逻辑或
NOT
(取反)
逻辑非

NOTE

元数据过滤要求你知识库中的文档带有元数据属性。对于 S3 数据源,请在文档旁创建 .metadata.json 文件。

手动配置

如果你更喜欢手动配置向量库,可以直接创建这些 bean 来做。

把此依赖添加到你的项目:

xml
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-bedrock-knowledgebase-store</artifactId>
</dependency>

TIP

参见 依赖管理 一节,把 Spring AI BOM 添加到你的构建文件。

示例代码

java
@Bean
public BedrockAgentRuntimeClient bedrockAgentRuntimeClient() {
    return BedrockAgentRuntimeClient.builder()
        .region(Region.US_EAST_1)
        .build();
}

@Bean
public VectorStore vectorStore(BedrockAgentRuntimeClient client) {
    return BedrockKnowledgeBaseVectorStore.builder(client, "YOUR_KNOWLEDGE_BASE_ID")
        .topK(10)
        .similarityThreshold(0.5)
        .searchType(SearchType.SEMANTIC)
        .build();
}

然后使用该向量库:

java
List<Document> results = vectorStore.similaritySearch(
    SearchRequest.builder()
        .query("What are the company holidays?")
        .topK(3)
        .build());

for (Document doc : results) {
    System.out.println("Content: " + doc.getText());
    System.out.println("Score: " + doc.getScore());
    System.out.println("Source: " + doc.getMetadata().get("source"));
}

访问原生客户端

Bedrock 知识库向量库通过 getNativeClient() 方法提供对底层原生客户端的访问:

java
BedrockKnowledgeBaseVectorStore vectorStore = context.getBean(BedrockKnowledgeBaseVectorStore.class);
Optional<BedrockAgentRuntimeClient> nativeClient = vectorStore.getNativeClient();

if (nativeClient.isPresent()) {
    BedrockAgentRuntimeClient client = nativeClient.get();
    // Use the native client for Bedrock-specific operations
}

限制

  • 只读:add() 和 delete() 方法会抛出 UnsupportedOperationException。文档通过知识库的数据源同步流程管理。
  • HYBRID 搜索:仅对基于 OpenSearch 的向量库可用。
  • 重排序可用性:模型可用性因 AWS 区域而异。

受支持的数据源

Bedrock 知识库支持多种数据源类型。源位置会包含在文档元数据中:

数据源
元数据字段
示例
S3
source
s3://bucket/path/document.pdf
Confluence
source
https://confluence.example.com/page/123
SharePoint
source
https://sharepoint.example.com/doc/456
Salesforce
source
https://salesforce.example.com/record/789
Web Crawler
source
https://example.com/page
自定义
source
自定义文档 ID

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