Spring AI学习:配置redis向量数据库&RAG实践
<h2>配置redis向量数据库:</h2><p>配置依赖:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">></span>org.springframework.ai<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">></span>spring-ai-starter-vector-store-redis<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>配置redis数据库属性:</p>
<p><img src="https://img2024.cnblogs.com/blog/3291169/202601/3291169-20260122184731305-2020100798.png"></p>
<h2> RAG实践:</h2>
<p>使用spring ai提供的环绕增强(advisor)功能实现RAG。</p>
<p>配置依赖:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">></span>org.springframework.ai<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">groupId</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">></span>spring-ai-advisors-vector-store<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">artifactId</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">dependency</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>增加QuestionAnswerAdvisor(当前1.1.2版本应该是不能直接new了,QuestionAnswerAdvisor属于包级私有,用builder链式编程可以实现创建)</p>
<p><img src="https://img2024.cnblogs.com/blog/3291169/202601/3291169-20260122185151530-1922427149.png"></p>
<p> <strong>只要配置依赖和属性,spring ai starter会在程序运行初自动生成VectorStore的Bean,直接注入即可使用vectorStore。</strong></p>
<p><strong>(我在运行时出现报错:EmbedingModel不可用,于是我手动设置了一个,如下图)</strong></p>
<p><img src="https://img2024.cnblogs.com/blog/3291169/202601/3291169-20260122185759571-702829917.png"></p>
<p> 读取文件并写入向量数据库(spring ai提供了ETL接口,通过对应的Reader就能将文件转换为Document):</p>
<p><img src="https://img2024.cnblogs.com/blog/3291169/202601/3291169-20260122185917548-1482943922.png"></p>
<p> 进行一次对话(数据文本及结果如下):</p>
<p><img src="https://img2024.cnblogs.com/blog/3291169/202601/3291169-20260122185956875-1394431497.png"></p>
<p>redis中数据:</p>
<p><img src="https://img2024.cnblogs.com/blog/3291169/202601/3291169-20260122190156754-1107897263.png"></p><br><br>
来源:https://www.cnblogs.com/syf0824/p/19518768
頁:
[1]