向量转换

向量转换是将文本等非结构化数据转换为数值向量的过程,通常通过嵌入模型(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. 过滤与排序:根据阈值筛选结果,并从大到小排序。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐