微信扫码
添加专属顾问
我要投稿
ThinkRAG大模型RAG实战系列文章,带你深入探索使用LlamaIndex框架,构建本地大模型知识库问答系统。本系列涵盖知识库管理、检索优化、模型本地部署等主题,通过代码与实例,讲解如何打造生产级系统,实现本地知识库的快速检索与智能问答。
前文讨论了实现混合检索的方法。当我们把检索到的内容,发送给大模型生成回答时,希望能够快速得到响应。
类似ChatGPT的流式(streaming)输出可以提升用户的体验。
特别是当我们要求大模型输出长文本时,例如:生成一篇2000字文章,用户无需等待生成完毕,即可开始阅读生成的内容。
现在的大语言模型(LLM)基本都支持流式输出。在LlamaIndex中实现方式很简单:我们在构建问答引擎(Query Engine)时,只需要明确设置参数streaming=True即可。
代码实例如下:
from llama_index.core.query_engine import RetrieverQueryEngine
query_engine = RetrieverQueryEngine.from_args(
retriever=retriever,
text_qa_template=text_qa_template,
refine_template=refine_template,
node_postprocessors=node_postprocessors,
"simple_summarize", =
verbose=True,
streaming=True,
)
这时,我们通过query_engine的query方法向大模型提问:“流程有哪三个特征”,该方法会返回一个response对象。
prompt = "流程有哪三个特征?"
response = query_engine.query(prompt)
response_text = st.write_stream(response.response_gen)
我们将response对象的reponse_gen方法,对接到Streamlit的write_stream方法,就可以接收大模型生成的流式输出,并同步在前端显示了。
该方法的返回值response_text,则是此次流式输出的全文,可以进一步处理或保存到对话记录中。
目前,ThinkRAG已采用流式输出。如果你运行ThinkRAG进行提问,可以看到系统的响应速度非常快,软件记录的时间为0.05秒。
效果如下:
如果,你的LlamaIndex应用不是通过Streamlit输出,而是在终端(console)输出,那么我们直接调用print_response_stream方法即可。
response.print_response_stream()
如果你自行开发软件前端,需要对流式输出进行手动处理,那么可以参考以下方法实现。
for text in response.response_gen:# do something with text as they arrive.pass
文中代码实例,可参考开源项目ThinkRAG。
https://github.com/wzdavid/ThinkRAG
ThinkRAG是基于LlamaIndex框架,前端使用Streamlit开发的大模型本地知识库RAG系统,可在笔记本电脑上部署和离线运行。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-09-18
关于相似度计算和rerank重排序的区别和作用
2025-09-18
给RAG打分:小白也能懂的AI系统评测全攻略
2025-09-18
向量化与嵌入模型:RAG系统背后的隐形英雄
2025-09-17
当“相似度 ≠ 相关性”:PageIndex 带来的 RAG 新范式
2025-09-17
解锁RAG高阶密码:自适应、多模态、个性化技术深度剖析
2025-09-16
你的 RAG 还在“垃圾进,垃圾出”?我用这套流程,把“废料”文档变成了黄金知识库
2025-09-15
应对知识管理挑战:RAG技术如何驱动企业智能化升级
2025-09-15
RAG彻底爆了!一文掌握其效果优化的架构设计及核心要点
2025-07-15
2025-06-24
2025-06-24
2025-07-16
2025-06-23
2025-07-09
2025-07-08
2025-08-05
2025-08-18
2025-09-02
2025-09-10
2025-09-10
2025-09-03
2025-08-28
2025-08-25
2025-08-20
2025-08-11
2025-08-05