【Java SpringAI智能体开发学习 | 4-2】RAG知识库进阶:向量转换和存储
向量转换是将文本等非结构化数据转换为数值向量的过程,通常通过嵌入模型(Embedding Model)实现。SpringAI提供了EmbeddingClient接口用于和数据交互。
向量转换
向量转换是将文本等非结构化数据转换为数值向量的过程,通常通过嵌入模型(Embedding Model)实现。
SpringAI提供了EmbeddingClient接口用于和数据交互。
向量存储
向量存储用于高效存储和检索向量数据
VectorStore
VectorStore是SpringAI提供的官方接口,负责将Document转换为向量并存储起来。
public interface VectorStore extends DocumentWriter {
default String getName() {
return this.getClass().getSimpleName();
}
void add(List<Document> documents);//增加
void delete(List<String> idList);//从向量数据库中删除
void delete(Filter.Expression filterExpression);
default void delete(String filterExpression) { ... };
List<Document> similaritySearch(String query);//相似度搜索
List<Document> similaritySearch(SearchRequest request);
default <T> Optional<T> getNativeClient() {
return Optional.empty();
}
}
这个接口提供了添加、删除、相似度搜索、获取原生客户端的方法。
Filter.Expression
Filter.Expression 是用于构建过滤条件的对象,主要作用是在向量数据库操作(如删除、查询)时筛选符合特定条件的文档,而不是对所有文档进行操作。
它类似于 SQL 中的 WHERE 子句,允许你根据文档的元数据(metadata) 进行条件过滤,而不仅仅依赖向量相似度。
SearchRequest
用于构建相似度搜索请求,有多种配置选项:
query:搜索的查询文本
topK:返回最大结果数
similarityThreshold:相似度阈值
filterExpression:同上段描述
官方同时还提供了向量存储整合包,帮助开发者快速集成第三方向量存储。如PGVector。
工作流程
1. Embedding转换:将被添加到向量数据库的文档通过Embedding模型进行向量转换
2. 相似度计算:将查询的语句同样转换为向量,然后通过相似度度量计算与数据库中的数据的相似度
3. 相似度度量:是一种数学方法或算法规则,用于定义 “两个向量相似程度” 的量化标准。它是一套 “评价体系”,规定了从向量的维度信息中计算出 “相似度值” 的逻辑。
4. 过滤与排序:根据阈值筛选结果,并从大到小排序。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)