Ollama+LangFlow实现智能问答系统
LangFlow 是一个开源的、基于 Web 的用户界面,旨在简化与大模型(LLMs)和其他自然语言处理(NLP)工具的交互。它提供了直观的图形化界面,让用户能够轻松构建和管理复杂的 NLP 流程,而无需编写大量代码。LangFlow 特别适用于需要快速原型设计、实验不同配置或与大模型进行互动的场景。
安装LangFlow
bash
# Conda创建3.11版本的Python环境
conda create -n py_311 python=3.11 -y
# 进入py_311环境
conda activate py_311
# 安装uv(官方推荐),比pip性能更好
# 如果直接用pip安装会出现提示 pip is looking at multiple versions of <<library>> to determine which version is compatible with other requirements. This could take a while.
pip install uv
# 安装 LangFlow
uv pip install langflow
启动
bash
# 启动
uv run langflow run
访问地址
文档问答
用从本地内存加载的文档构建问答聊天机器人。将文档内容作为大模型提示词的上下文,基于此上下文寻找用户问题的答案并作出回答。
- 上传文档。
File结点支持本地文档的上传; Parse Data结点将文档内容转成Data,传给Prompt结点;Prompt结点用作创建提示词模板,变量通过{}包裹,例如{Document};Chat Input结点用作用户输入问题,将问题内容传递给Prompt结点的Question变量;- 将
Prompt结点的Prompt Message传递给OpenAI结点,Prompt Message会将文档内容和用户问题结合成一个文本。如果没有OpenAI的API KEY,可以将OpenAI结点换成Ollama结点,并给Ollama配置本地部署的大模型基础URL; - 将
OpenAI结点的处理结果Text变量传递给Chat Output结点,前端展示给用户。
总结
大模型的缺点是支持的上下文长度有限,如果想要某个问题毕其功于一役的给大模型一次新回答出来,超出了大模型的 Token 长度限制,大模型会回答不出来。 LangFlow 可以将问题拆解成多个小问题,分多次调用 OpenAI / Ollama 结点,最终得到问题的答案。
例如,想要对一段超长文章生成摘要,可以将文章拆解成10份,每一份文本片段都单独使用一个大模型结点生成摘要,然后将10份摘要汇聚在一起。
LangFlow 也支持多种类型的流程结点。除了前文中提到的 Chat Input 属于 Inputs 、 Chat Output 属于 Outputs 、 Prompt 属于 Prompts 、 OpenAI 和 Ollama 属于 Models 。LangFlow 还有 SQL Query 结点、 if-Else 等常用功能结点。提供这些结点的目的就是为了让非开发人员也能够利用大模型实现自己的 AI Agents 。