零根本学习Spring AI Java AI使用向量数据库Redis检索增强天生 RAG ...

打印 上一主题 下一主题

主题 900|帖子 900|积分 2700

零根本学习Spring AI Java AI使用向量数据库Redis检索增强天生 RAG

要使用向量数据库的原因:数据通常黑白布局化的,这就意味着它没有由界说精良的架构去描述。非布局化数据一般包括文本段落,图像,视频或音频。存储和查询非布局化数据的一种方法是使用向量嵌入。
什么是向量? 在机器学习和人工智能AI中,向量是体现数据的数字序列。它们是模型的输入和输出,以数字形式封装根本信息。矢量将非布局化数据(如文本,图像,视频或音频)转换为机器学习模型可以处理的格式。
增强传统搜刮查询。传统的关键字或词汇搜刮查询依赖于单词或短语的准确匹配,这大概会受到限制。相比之下,向量搜刮或语义搜刮利用了向量嵌入中捕捉的丰富信息。通过将数据映射到向量空间中,相似的项目根据其含义彼此靠近放置。这种方法允许更正确和有意义的搜刮结果,由于它考虑了查询的上下文和语义内容,而不仅仅是使用简直切的单词。
零根本学习Spring AI Java AI使用向量数据库postgresql 检索增强天生 RAG
零根本学习Spring AI Java AI SpringBoot AI调用大模型OpenAi Ollama集成大模型
本地部署大模型,不须要GPU就能玩本地模型-亲测成功
### 向量检索
向量检索(Vector Search)的核心原理是通过将文本或数据体现为高维向量,并在查询时根据向量的相似度举行搜刮。


  • 检索的核心是将文本或数据转换成向量,在高维向量空间中查找与查询最相似的向量。
  • 在存储数据时将指定的字段通过嵌入模型天生了向量。
  • 在检索时,查询文本被向量化,然后与 Redis 中存储的向量举行相似度比力,找到相似度最高的向量(即相关的文档)。
Redis向量数据库

Redis 是一个开源(BSD 允许)的内存数据布局存储,用作数据库、缓存、消息代理和流式处理引擎。Redis 提供数据布局,例如字符串、哈希、列表、集合、带范围查询的有序集合、位图、超对数日记、地理空间索引和流。
Redis 搜刮和查询 扩展了 Redis OSS 的核心功能,并允许您将 Redis 用作向量数据库


  • 在哈希或 JSON 文档中存储向量和关联的元数据
  • 检索向量
  • 执行向量搜刮
解读详细向量化过程




    • 向量化数据

当你将 JSON 中的字段存入 Redis 时,向量化工具(例如 vectorStore)会将指定的字段转换为高维向量。每个字段的内容会通过某种嵌入模型(如 Word2Vec、BERT、OpenAI Embeddings 等)转换成向量体现。每个向量体现的是该字段内容的语义特征。



    • 搜刮时的向量天生

当执行 SearchRequest.query(message) 时,系统会将输入的 message 转换为一个查询向量。这一步是通过同样的嵌入模型,将查询文本转换为与存储在 Redis 中雷同维度的向量。



    • 相似度匹配
      vectorStore.similaritySearch(request) 函数使用了一个向量相似度盘算方法来查找最相似的向量。这通常是通过 余弦相似度 或 欧几里得间隔 来度量查询向量和存储向量之间的间隔。然后返回与查询最相似的前 K 个文档,即 withTopK(topK) 所指定的 K 个最相关的结果。


    • 返回匹配的文档
      匹配的结果是根据相似度得分排序的 List。这些文档是你最初存储在 Redis 中的记录,包含了 JSON 中指定的字段。

环境安装

须要安装Redis Stack
docker运行Redis Stack
官方地址:https://redis.io/docs/latest/operate/oss_and_stack/install/install-stack/docker/


  • redis/redis-stack包含 Redis Stack 服务器和 Redis Insight。此容器最适合本地开辟,由于您可以使用嵌入式 Redis Insight 来可视化数据。
  • redis/redis-stack-server仅提供 Redis Stack 服务器。此容器最适合生产部署。
docker启动redis-stack
  1. docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latest
复制代码
欣赏器访问redis可视化界面:http://127.0.0.1:8001

创建项目



maven的pom.xml设置
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.     <modelVersion>4.0.0</modelVersion>
  5.     <parent>
  6.         <groupId>org.springframework.boot</groupId>
  7.         <artifactId>spring-boot-starter-parent</artifactId>
  8.         <version>3.3.5</version>
  9.         <relativePath/> <!-- lookup parent from repository -->
  10.     </parent>
  11.     <groupId>com.example</groupId>
  12.     <artifactId>springai</artifactId>
  13.     <version>0.0.1-SNAPSHOT</version>
  14.     <name>springai</name>
  15.     <description>springai</description>
  16.     <properties>
  17.         <java.version>23</java.version>
  18.     </properties>
  19.     <dependencyManagement>
  20.         <dependencies>
  21.             <dependency>
  22.                 <groupId>org.springframework.ai</groupId>
  23.                 <artifactId>spring-ai-bom</artifactId>
  24.                 <version>1.0.0-SNAPSHOT</version>
  25.                 <type>pom</type>
  26.                 <scope>import</scope>
  27.             </dependency>
  28.         </dependencies>
  29.     </dependencyManagement>
  30.     <dependencies>
  31.         <dependency>
  32.             <groupId>org.springframework.boot</groupId>
  33.             <artifactId>spring-boot-starter-web</artifactId>
  34.         </dependency>
  35.         <dependency>
  36.             <groupId>org.springframework.boot</groupId>
  37.             <artifactId>spring-boot-starter-actuator</artifactId>
  38.         </dependency>
  39.         <dependency>
  40.            <groupId>org.springframework.ai</groupId>
  41.             <artifactId>spring-ai-redis-store-spring-boot-starter</artifactId>
  42.         </dependency>
  43. <!--        <dependency>-->
  44. <!--            <groupId>org.springframework.ai</groupId>-->
  45. <!--            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>-->
  46. <!--        </dependency>-->
  47.         <dependency>
  48.             <groupId>org.springframework.ai</groupId>
  49.             <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
  50.         </dependency>
  51.         <dependency>
  52.             <groupId>org.springframework.boot</groupId>
  53.             <artifactId>spring-boot-starter-test</artifactId>
  54.             <scope>test</scope>
  55.         </dependency>
  56.     </dependencies>
  57.     <build>
  58.         <plugins>
  59.             <plugin>
  60.                 <groupId>org.springframework.boot</groupId>
  61.                 <artifactId>spring-boot-maven-plugin</artifactId>
  62.             </plugin>
  63.         </plugins>
  64.     </build>
  65.     <repositories>
  66.         <repository>
  67.             <id>spring-milestones</id>
  68.             <name>Spring Milestones</name>
  69.             <url>https://repo.spring.io/milestone</url>
  70.             <snapshots>
  71.                 <enabled>false</enabled>
  72.             </snapshots>
  73.         </repository>
  74.         <repository>
  75.             <id>spring-snapshots</id>
  76.             <name>Spring Snapshots</name>
  77.             <url>https://repo.spring.io/snapshot</url>
  78.             <releases>
  79.                 <enabled>false</enabled>
  80.             </releases>
  81.         </repository>
  82.     </repositories>
  83. </project>
复制代码
设置Redis连接信息

  1. spring.application.name=springai
  2. spring.ai.vectorstore.redis.initialize-schema=true
  3. spring.ai.vectorstore.redis.uri=redis://192.168.18.97:6379
  4. spring.ai.vectorstore.redis.index=default-index
  5. spring.ai.vectorstore.redis.prefix=default:
  6. spring.ai.openai.api-key=34223242432424324
  7. spring.ai.vectorstore.pgvector.index-type=HNSW
  8. spring.ai.vectorstore.pgvector.distance-type=COSINE_DISTANCE
  9. spring.ai.vectorstore.pgvector.dimensions=1536
  10. spring.ai.ollama.base-url=http://192.168.18.59:11434
  11. spring.ai.ollama.init.pull-model-strategy=never
  12. spring.ai.ollama.init.timeout=60s
  13. spring.ai.ollama.init.max-retries=1
  14. spring.ai.ollama.chat.options.model=llama3.1:latest
  15. spring.ai.ollama.chat.options.temperature=0.7
  16. spring.ai.ollama.embedding.enabled=true
  17. spring.ai.ollama.embedding.options.model=llama3.1-instruct:latest
复制代码
代码使用如下
  1. package com.example.springai.controller;
  2. import org.springframework.ai.document.Document;
  3. import org.springframework.ai.embedding.EmbeddingModel;
  4. import org.springframework.ai.embedding.EmbeddingResponse;
  5. import org.springframework.ai.vectorstore.SearchRequest;
  6. import org.springframework.ai.vectorstore.VectorStore;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.web.bind.annotation.GetMapping;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import java.util.List;
  11. import java.util.Map;
  12. @RestController
  13. class AIController {
  14.     @Autowired
  15.     VectorStore vectorStore;
  16.     @GetMapping("/ai")
  17.     void ai() {
  18.         List<Document> documents = List.of(
  19.                 new Document("Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!!", Map.of("meta1", "meta1")),
  20.                 new Document("The World is Big and Salvation Lurks Around the Corner"),
  21.                 new Document("You walk forward facing the past and you turn back toward the future.", Map.of("meta2", "meta2")));
  22. // Add the documents to Redis
  23.         vectorStore.add(documents);
  24. // Retrieve documents similar to a query
  25.         List<Document> results = this.vectorStore.similaritySearch(SearchRequest.query("Spring").withTopK(5));
  26.     }
  27. }
复制代码
运行项目
访问接口:http://localhost:8080/ai
查看生存到Redis里的数据
参考链接:
http://www.liuhaihua.cn/archives/711448.html
https://mp.weixin.qq.com/s?__biz=MzAxMjY5NDU2Ng==&mid=2651869668&idx=1&sn=894bd454f055fa4a80d6cad8cfdf51ed&chksm=81e7bab8410a46d987098c55234834796d0ef8ffd1b3495029b33ac45807fa00364d39aeff93&scene=27
https://blog.csdn.net/u011046509/article/details/138292597
https://blog.csdn.net/rubys007/article/details/140561477

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表