个人随笔
目录
SpringAI2.0向量数据库的简单使用
2026-11-04 21:46:58

向量数据库是一种专用类型的数据库,在AI应用中发挥着至关重要的作用。在向量数据库中,查询方式与传统关系型数据库不同。它们不进行精确匹配,而是执行相似性搜索。当提供一个向量作为查询时,向量数据库会返回与该查询向量“相似”的向量。

一、向量数据库

SpringAI支持很多种向量数据库,使用起来都比较简单根据官网加入依赖设置配置就可以了。

  • Azure 向量搜索- 这是Azure向量存储。
  • Apache Cassandra- 这是Apache Cassandra向量存储。
  • Chroma 向量存储- 这是Chroma向量存储。
  • Elasticsearch 向量存储- 这是Elasticsearch向量存储。
  • GemFire 向量存储- 这是GemFire的向量存储。
  • MariaDB 向量存储- 这是MariaDB的向量存储。
  • Milvus 向量存储- 这是Milvus的向量存储。
  • MongoDB Atlas 向量存储- 这是MongoDB Atlas的向量存储。
  • Neo4j 向量存储- 这是Neo4j的向量存储。
  • OpenSearch 向量存储- 这是OpenSearch的向量存储。
  • Oracle 向量存储- 这是Oracle 数据库的向量存储。
  • PgVector 存储-PostgreSQL/PGVector向量存储。
  • Pinecone 向量存储 - Pinecone向量存储。
  • Qdrant 向量存储 - Qdrant向量存储。
  • Redis 向量存储- 这是Redis向量存储。
  • Typesense 向量存储- 这是Typesense向量存储。
  • Weaviate 向量存储- 这是Weaviate的向量存储。
  • S3 向量存储- 这是AWS S3的向量存储。
  • SimpleVectorStore - 向量存储的简单实现,仅适用于测试用途。

参考文档:https://docs.spring.io/spring-ai/reference/api/vectordbs.html

二、简单例子

这里用SimpleVectorStore做个简单例子,是内存实现的,不用启动客户端

1、依赖

  1. <dependency>
  2. <groupId>org.springframework.ai</groupId>
  3. <artifactId>spring-ai-vector-store</artifactId>
  4. </dependency>

2、bean

  1. @Bean
  2. public SimpleVectorStore vectorStore(OpenAiEmbeddingModel embeddingModel) {
  3. return SimpleVectorStore.builder(embeddingModel).build();
  4. }

4、使用

  1. @Autowired
  2. private SimpleVectorStore vectorStore;
  3. @GetMapping("/v")
  4. public String v(){
  5. //加入向量数据库中
  6. vectorStore.doAdd(List.of(new Document("我爱java"),
  7. new Document("我爱php"),
  8. new Document("我爱JavaScript"),
  9. new Document("我爱小猫咪")));
  10. //相似度查询
  11. List<Document> documents = vectorStore.similaritySearch(
  12. SearchRequest.builder()
  13. .query("开发语言")//要查询的结果
  14. .topK(2)//最多返回两个
  15. .build());
  16. for(Document document :documents){
  17. System.out.println("document:"+document);
  18. }
  19. return "ok";
  20. }

日志

  1. 2026-11-04T21:39:30.808+08:00 INFO 8408 --- [spring-ai-test] [nio-8080-exec-1] o.s.ai.vectorstore.SimpleVectorStore : Calling EmbeddingModel for document id = cc4ab97a-80bd-42dc-b16e-fa0b08df515a
  2. 2026-11-04T21:39:31.757+08:00 INFO 8408 --- [spring-ai-test] [nio-8080-exec-1] o.s.ai.vectorstore.SimpleVectorStore : Calling EmbeddingModel for document id = 2e582aca-59fe-4bf7-8ab7-48da6943991a
  3. 2026-11-04T21:39:31.905+08:00 INFO 8408 --- [spring-ai-test] [nio-8080-exec-1] o.s.ai.vectorstore.SimpleVectorStore : Calling EmbeddingModel for document id = d43d24a9-682a-4f05-99ea-43510e1b9409
  4. 2026-11-04T21:39:32.074+08:00 INFO 8408 --- [spring-ai-test] [nio-8080-exec-1] o.s.ai.vectorstore.SimpleVectorStore : Calling EmbeddingModel for document id = 25622fff-046b-4c25-b188-0eb7539b1acd
  5. document:Document{id='cc4ab97a-80bd-42dc-b16e-fa0b08df515a', text='我爱java', media='null', metadata={distance=0.6221694598406258}, score=0.3778305401593743}
  6. document:Document{id='d43d24a9-682a-4f05-99ea-43510e1b9409', text='我爱JavaScript', media='null', metadata={distance=0.626568186855931}, score=0.37343181314406904}

根据日志可以看到四句文字转成了向量,然后查询也符合预期返回了两条跟开发语言相关的内容。

 1

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2