|
此版本仍在开发中,尚未被视为稳定版。为了获取最新的快照版本,请使用Spring AI 1.1.3! |
亚马逊Bedrock知识库
本节指导您完成设置Amazon Bedrock知识库VectorStore的步骤,以便对预配置的知识库执行相似性搜索。
Amazon Bedrock 知识库 是一项全托管的 RAG(检索增强生成)功能,可让您将基础模型连接到数据源。与其它向量存储不同,Bedrock 知识库内部处理文档摄入、分块和嵌入。
前提条件
-
具有Bedrock访问权限的AWS账户
-
一个配置好的Bedrock知识库,至少含有一個已同步的数据源
-
AWS 凭证已配置(通过环境变量、AWS 配置文件或 IAM 角色)
|
此向量存储为只读。文档通过知识库的数据源同步过程进行管理,而不是通过 |
自动配置
Spring AI 为 Bedrock 知识库向量存储提供了 Spring Boot 自动配置功能。要启用此功能,请在项目的 Maven `pom.xml` 文件中添加以下依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-vector-store-bedrock-knowledgebase</artifactId>
</dependency>
或者添加到你的 Gradle build.gradle 构建文件中:
dependencies {
implementation 'org.springframework.ai:spring-ai-starter-vector-store-bedrock-knowledgebase'
}
| 参考以下依赖管理部分,添加Spring AI BOM到你的构建文件中。 |
|
与其他向量存储不同,Bedrock知识库在数据源同步期间内部处理嵌入,无需提供 |
要连接到您的知识库,请通过Spring Boot的application.properties提供知识库ID:
spring.ai.vectorstore.bedrock-knowledge-base.knowledge-base-id=YOUR_KNOWLEDGE_BASE_ID
spring.ai.vectorstore.bedrock-knowledge-base.region=us-east-1
或者通过环境变量:
export SPRING_AI_VECTORSTORE_BEDROCK_KNOWLEDGE_BASE_KNOWLEDGE_BASE_ID=YOUR_KNOWLEDGE_BASE_ID
现在,您可以在应用程序中自动装配 Vector Store:
@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 知识库向量存储。
| 属性 | 描述 | 默认值 |
|---|---|---|
|
查询的Bedrock知识库的ID |
- |
|
Bedrock 服务的 AWS 区域 |
SDK默认 |
|
返回结果的数量 |
5 |
|
最低相似度分数(0.0到1.0) |
0.0 |
|
搜索类型:语义或混合 |
null (KB默认值) |
|
Bedrock 重排序模型的 ARN |
null (禁用) |
搜索类型
Bedrock知识库支持两种搜索类型:
-
0 - 向量相似度搜索仅(默认)
-
HYBRID- 结合语义搜索与关键词搜索
|
混合搜索(HyBRID search)只在基于 OpenSearch 的向量存储中可用。S3 向量、Aurora PostgreSQL 等其他向量存储类型只能支持语义搜索(SEMANTIC search)。 |
spring.ai.vectorstore.bedrock-knowledge-base.search-type=HYBRID
重排
你可以通过启用Bedrock重排序模型来提高搜索相关性:
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 知识库存储器集成使用。
例如,你可以使用文本表达式语言:
vectorStore.similaritySearch(
SearchRequest.builder()
.query("travel policy")
.topK(5)
.similarityThreshold(0.5)
.filterExpression("department == 'HR' && year >= 2024")
.build());
或通过编程方式使用 Filter.Expression DSL:
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());
手动配置
如果你希望手动配置向量存储,你可以通过直接创建豆来实现。
将此依赖项添加到您的项目中:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bedrock-knowledgebase-store</artifactId>
</dependency>
| 参考以下依赖管理部分,添加Spring AI BOM到你的构建文件中。 |
示例代码
@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();
}
然后使用向量存储库:
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() 方法访问底层 nat 代理的访问。
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
}
支持的数据源
Bedrock知识库支持多种数据源类型。数据源的位置包含在文档元数据中:
| 数据源 | 元数据字段 | 示例 |
|---|---|---|
S3 |
|
|
Confluence **整合** |
|
|
SharePoint |
|
|
Salesforce |
|
|
网络爬虫 |
|
|
自定义 |
|
自定义文档ID |