﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-paulwong-随笔分类-AI-RAG</title><link>http://www.blogjava.net/paulwong/category/55405.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 03 Jan 2026 21:27:53 GMT</lastBuildDate><pubDate>Sat, 03 Jan 2026 21:27:53 GMT</pubDate><ttl>60</ttl><item><title>AI应用资源</title><link>http://www.blogjava.net/paulwong/archive/2026/01/03/451717.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sat, 03 Jan 2026 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/01/03/451717.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451717.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/01/03/451717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451717.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451717.html</trackback:ping><description><![CDATA[<div><a href="https://www.zhujunyue.com/hangye/#0" target="_blank">https://www.zhujunyue.com/hangye/#0</a><br />
</div>
<div><br />
</div>
<div><br />
</div>
<div><br />
</div>
<img src ="http://www.blogjava.net/paulwong/aggbug/451717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-01-03 11:21 <a href="http://www.blogjava.net/paulwong/archive/2026/01/03/451717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解读RAG</title><link>http://www.blogjava.net/paulwong/archive/2025/12/13/451711.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 12 Dec 2025 17:28:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2025/12/13/451711.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451711.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2025/12/13/451711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451711.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451711.html</trackback:ping><description><![CDATA[向大模型输入问题，让大模型回答。
<div>大模型的做法是，先自己去寻找相关信息，再汇总出答案。这个过程有可能不靠谱，大模型自己寻找出他自己认为是对的信息，可能是错的，所以做出的答案，就是错的。</div>
<div>于是改成，让程序找出相关信息，再给大模型汇总。程序员编程后找出的信息肯定是对的，大模型汇总的结果，以大模型的能力，结果也是对的。</div>
<div><br />
</div>
<div>但这种方式有问题，就是会多次调用大模型，大模型通常是部署在远端的，就会产生性能问题。所以在大模型内部，让大模型自己去调用工具。</div>
<div><br />
</div>
<div>要大模型自己调用工具，就得靠系统提示词了，当然系统提示词不用自己写，将在n8n中流程导出json，再向deepseek提问，就可以生成提示词了。</div>
<div><br />
</div>
<div>调用的工具不止一个，就会产生协同问题，如何将a工具产生的结果作为参数调用b工具，这里的做法就是使用few shot，意思是在提示词中要要提供例子，如调用工具产生结果r1，{"input": r1}以这个参数调用工具b，这样工具b内部通过fromAI("input")就能获取到input参数的值了。</div>
<div><br />
</div>
<div>这个过程中大模型实际只做汇总，利用了大模型的长处，避免了大模型的短处。</div>
<div><br />
</div>
<div>程序去找信息，如果是从数据库中找出相关文档的方式，就是通常据说的RAG。</div>
<div><br />
</div>
<div>但在做RAG的过程中，难免碰到需求，如：用户输入关键词，直播回答某些预先答案。</div>
<div><br />
</div>
<div>象这种的实现方式，如果采用将答案弄成文档，再去让程序找到相关文档，再让大模型汇总这种方式也是不可靠。因为找到文档也是靠概率。</div>
<div>因此需使用新的方式，这种方式就是让程序调用工具，得出结果作为相关信息，再让大模型做汇总。这个过程出来的结果就是可靠的了。</div>
<div><br />
</div>
<div>为什么大模型会去调用工具呢</div>
<div><br />
</div>
<div>如果工具处理的方式不够，需要思考，那就需要加入大模型进去，进行协助，这种工具就是智能体了。整个架构就是所谓的多智能体的方式了。</div>
<div><br />
</div>
<div>所以总体的思路，就是让大模型做最擅长的活，汇总，信息提供由外部去做。整个结果就是可控的了。</div>
<img src ="http://www.blogjava.net/paulwong/aggbug/451711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2025-12-13 01:28 <a href="http://www.blogjava.net/paulwong/archive/2025/12/13/451711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Open WebUI + N8N 流式输出</title><link>http://www.blogjava.net/paulwong/archive/2025/11/08/451694.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sat, 08 Nov 2025 01:03:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2025/11/08/451694.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451694.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2025/11/08/451694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451694.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451694.html</trackback:ping><description><![CDATA[<div>Integrating n8n with Open WebUI: Building advanced AI chatbots and workflows</div>
<div><a href="https://www.pondhouse-data.com/blog/integrating-n8n-with-open-webui" target="_blank">https://www.pondhouse-data.com/blog/integrating-n8n-with-open-webui</a><br />
</div>
<div><br />
</div>
<div>n8nchatui</div>
<div><a href="https://n8nchatui.com/docs" target="_blank">https://n8nchatui.com/docs</a><br />
</div>
<div><a href="https://www.youtube.com/watch?v=_dmrr7kWRI0" target="_blank">https://www.youtube.com/watch?v=_dmrr7kWRI0</a><br />
</div>
<div><br />
</div>
<div>open-webui function:</div>
<div><a href="https://openwebui.com/f/webfox/n8n_streaming" target="_blank">https://openwebui.com/f/webfox/n8n_streaming</a><br />
</div>
<div><br />
</div>
<div>Complete Guide to n8n Chat Streaming Setup</div>
<div><a href="https://sudhanshu-sharma.notion.site/Complete-Guide-to-n8n-Chat-Streaming-Setup-24ed62104585806a8909d1b662209af3" target="_blank">https://sudhanshu-sharma.notion.site/Complete-Guide-to-n8n-Chat-Streaming-Setup-24ed62104585806a8909d1b662209af3</a><br />
</div>
<img src ="http://www.blogjava.net/paulwong/aggbug/451694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2025-11-08 09:03 <a href="http://www.blogjava.net/paulwong/archive/2025/11/08/451694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RAG提高召回率秘笈</title><link>http://www.blogjava.net/paulwong/archive/2025/09/06/451672.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sat, 06 Sep 2025 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2025/09/06/451672.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451672.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2025/09/06/451672.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451672.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451672.html</trackback:ping><description><![CDATA[传统的搜索是全文搜索, 即用户提供关键字, 系统将此关键字去数据库中的文本查找, 看文本是否含此关键字, 如有则返回.
<div>这种有个缺点, 如果提供的是关键字的同义词, 则无法搜索了.</div>
<div><br />
</div>
<div>于是最新的人工智能技术能解决这个问题, 即只提供同义词之类的也能找出来.</div>
<div><br />
</div>
<div>为什么能查找出来呢, 系统将待搜索的文本转成向量, 再将关键词转成向量, 查找欧氏距离或余弦相似度最近的那组向量, 再将此对应的文本返回.</div>
<div><br />
</div>
<div>由于文本长度太长, 通常是将文本切割成文本块, 再逐个存储. 这样会导致返回的文本有缺失.</div>
<div><br />
</div>
<div>于是产生不同的存储策略, 将文本的属性作为元数据保存了下来, 如果精准的知道其属性, 则可以直接查属性而找到文本.</div>
<div><br />
</div>
<div>也可以将此文本生成一段摘要, 也作为元数据保存下来, 关键字先和摘要匹配, 如果相近即返回.</div>
<div><br />
</div>
<div>也可以将文本转成全文索引的格式保存下来, 再以文本是否含此关键字进行搜索, 如有则返回.</div>
<div><br />
</div>
<div>这样返回的文本多了, 搜索的准确度自然就提高了.</div>
<div><br />
</div>
<div>这里推荐Milvus数据库, 将以上机制都放在服务器端, 用户只需调包即可实现, 大大简化的编程.</div>
<div><br />
</div>
<div>代码实现:</div>
<div><br />
</div>
<div><a href="https://milvus.io/docs/zh-hant/full_text_search_with_langchain.md" target="_blank">https://milvus.io/docs/zh-hant/full_text_search_with_langchain.md</a><br />
</div>
<div><br />
</div>
<div><br />
</div>
<div>书本代码:</div>
<div><a href="https://github.com/huangjia2019/rag-in-action/blob/master/04-向量存储-VectorDB/Milvus/create_milvus_db.py#L100" target="_blank">https://github.com/huangjia2019/rag-in-action/blob/master/04-向量存储-VectorDB/Milvus/create_milvus_db.py#L100</a><br />
</div>
<div><br />
</div>
<div><a href="https://github.com/Tylersuard/EnterpriseRAG/blob/main/Ch03/upload_sql_records_to_ai_search.py#L10" target="_blank">https://github.com/Tylersuard/EnterpriseRAG/blob/main/Ch03/upload_sql_records_to_ai_search.py#L10</a><br />
</div>
<div><br />
</div>
<div><a href="https://github.com/tomasonjo/kg-rag/blob/main/README.md" target="_blank">https://github.com/tomasonjo/kg-rag/blob/main/README.md</a><br />
</div>
<div><br />
</div>
<img src ="http://www.blogjava.net/paulwong/aggbug/451672.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2025-09-06 15:47 <a href="http://www.blogjava.net/paulwong/archive/2025/09/06/451672.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RAG优化</title><link>http://www.blogjava.net/paulwong/archive/2025/08/26/451666.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Tue, 26 Aug 2025 08:57:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2025/08/26/451666.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451666.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2025/08/26/451666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451666.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451666.html</trackback:ping><description><![CDATA[<div>老王AIGC</div>
<div><a href="https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&amp;__biz=MzkzMzc2MjAwOQ==&amp;scene=24&amp;album_id=3853666856078622721&amp;count=3#wechat_redirect" target="_blank">https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&amp;__biz=MzkzMzc2MjAwOQ==&amp;scene=24&amp;album_id=3853666856078622721&amp;count=3#wechat_redirect</a><br />
</div>
<div><br />
</div>
<div><br />
</div>
<img src ="http://www.blogjava.net/paulwong/aggbug/451666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2025-08-26 16:57 <a href="http://www.blogjava.net/paulwong/archive/2025/08/26/451666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>