这里写自定义目录标题
向量数据库是一种在人工智能应用中发挥关键作用的专用数据库类型。
在向量数据库中,查询方式与传统关系型数据库存在显著差异。它们并非进行精确匹配,而是执行相似性搜索。当以向量作为查询输入时,向量数据库会返回与查询向量"相似"的向量集合。关于这种相似性在高层级的计算方式,详见《向量相似性》章节的说明。
向量数据库用于将数据与人工智能模型进行整合。其使用流程的第一步是将数据加载到向量数据库中。当需要向AI模型发送用户查询时,系统会首先检索一组相似文档。这些文档将作为用户问题的上下文信息,与用户查询一起被发送至AI模型。这种技术被称为检索增强生成(Retrieval Augmented Generation, RAG)。
后续章节将介绍Spring AI框架中用于操作多种向量数据库实现的接口规范,以及相关高级用法示例。
最后一节旨在解析向量数据库中相似性搜索技术的底层实现原理。
API 概述
本节作为 Spring AI 框架中 VectorStore 接口 及其关联类的指南。
Spring AI 通过 VectorStore 接口 提供了与向量数据库交互的抽象化 API。
以下是 VectorStore 接口 的定义:
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();
}
}
以及相关的 SearchRequest 构建器 :
public class SearchRequest {
public static final double SIMILARITY_THRESHOLD_ACCEPT_ALL = 0.0;
public static final int DEFAULT_TOP_K = 4;
private String query = "";
private int topK = DEFAULT_TOP_K;
private double similarityThreshold = SIMILARITY_THRESHOLD_ACCEPT_ALL;
@Nullable
private Filter.Expression filterExpression;
public static Builder from(SearchRequest originalSearchRequest) {
return builder().query(originalSearchRequest.getQuery())
.topK(originalSearchRequest.getTopK())
.similarityThreshold(originalSearchRequest.getSimilarityThreshold())
.filterExpression(originalSearchRequest.getFilterExpression());
}
public static class Builder {
private final SearchRequest searchRequest = new SearchRequest();
public Builder query(String query) {
Assert.notNull(query, "查询内容不能为空。");
this.searchRequest.query = query;
return this;
}
public Builder topK(int topK) {
Assert

最低0.47元/天 解锁文章
9326

被折叠的 条评论
为什么被折叠?



