AI创想
标题:
Spring AI之向量数据库
[打印本页]
作者:
zoopk0079
时间:
昨天 21:30
标题:
Spring AI之向量数据库
作者:NtK11KGXVkk
这里写自定义目录标题
API 概述
数据插入与向量嵌入相似性搜索参数
模式初始化批处理策略
核心接口定义
默认实现:TokenCountBatchingStrategy内部机制与扩展性
自定义批处理策略
VectorStore 实现示例用法
数据加载到向量存储相似性搜索与上下文注入关键技术点
元数据过滤器
过滤字符串(Filter String)Filter.Expression 构建器
从向量存储中删除文档
按文档ID删除按过滤表达式删除按字符串过滤表达式删除删除操作的错误处理文档版本控制场景性能优化建议
向量数据库是一种在人工智能应用中发挥关键作用的专用数据库类型。
在向量数据库中,查询方式与传统关系型数据库存在显著差异。它们并非进行精确匹配,而是执行相似性搜索。当以向量作为查询输入时,向量数据库会返回与查询向量"相似"的向量集合。关于这种相似性在高层级的计算方式,详见《向量相似性》章节的说明。 向量数据库用于将数据与人工智能模型进行整合。其使用流程的第一步是将数据加载到向量数据库中。当需要向AI模型发送用户查询时,系统会首先检索一组相似文档。这些文档将作为用户问题的上下文信息,与用户查询一起被发送至AI模型。这种技术被称为检索增强生成(Retrieval Augmented Generation, RAG)。
后续章节将介绍Spring AI框架中用于操作多种向量数据库实现的接口规范,以及相关高级用法示例。
最后一节旨在解析向量数据库中相似性搜索技术的底层实现原理。
API 概述
本节作为 Spring AI 框架中 VectorStore 接口 及其关联类的指南。
Spring AI 通过 VectorStore 接口 提供了与向量数据库交互的抽象化 API。
以下是 VectorStore 接口 的定义:
publicinterfaceVectorStoreextendsDocumentWriter{
defaultStringgetName(){
returnthis.getClass().getSimpleName();}voidadd(List<Document> documents);voiddelete(List<String> idList);voiddelete(Filter.Expression filterExpression);defaultvoiddelete(String filterExpression){
...};List<Document>similaritySearch(String query);List<Document>similaritySearch(SearchRequest request);default<T>Optional<T>getNativeClient(){
returnOptional.empty();}}
复制代码
以及相关的 SearchRequest 构建器 :
publicclassSearchRequest{
publicstaticfinaldouble SIMILARITY_THRESHOLD_ACCEPT_ALL =0.0;publicstaticfinalint DEFAULT_TOP_K =4;privateString query ="";privateint topK = DEFAULT_TOP_K;privatedouble similarityThreshold = SIMILARITY_THRESHOLD_ACCEPT_ALL;@NullableprivateFilter.Expression filterExpression;publicstaticBuilderfrom(SearchRequest originalSearchRequest){
returnbuilder().query(originalSearchRequest.getQuery()).topK(originalSearchRequest.getTopK()).similarityThreshold(originalSearchRequest.getSimilarityThreshold()).filterExpression(originalSearchRequest.getFilterExpression());}publicstaticclassBuilder{
privatefinalSearchRequest searchRequest =newSearchRequest();publicBuilderquery(String query){
Assert.notNull(query,"查询内容不能为空。");this.searchRequest.query = query;returnthis;}publicBuildertopK(int topK){
Assert
复制代码
原文地址:https://blog.csdn.net/alyenc/article/details/146946586
欢迎光临 AI创想 (http://llms-ai.com/)
Powered by Discuz! X3.4