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
。