本项目是一个基于Langchain开发的RAG Search AI应用,RAG增强检索应用主要是为了解决大模型无法跟踪到私有知识或者最新的互联网信息的问题(这个造成即使chatgpt有时也是一本正经说胡话),因此RAG相关应用要么从企业私有知识库中获取知识,要么从开放的社区或搜索引擎上获取相关知识(本文是bing),最后都用从上述渠道获取的知识进行向量化并分析和检索。
本文用到两个框架langchain+chainlit,其中LangChain 和 Chainlit 在开发基于语言模型的聊天工具中扮演着不同但互补的角色。LangChain 构建强大的语言处理后端,负责语言模型的复杂操作和集成,而 Chainlit 则在前端提供良好的用户交互界面和部署运行能力,两者协同可以开发出功能强大、用户体验良好的聊天工具。
运行效果
step1)获取一个AI开源项目.
https://github.com/Steven-Luo/AISearchQA
step2)安装python环境
涉及的版本一定要按照官方说明文档来
step3)获取 LLM模型&Embedding模型
如果是有注册其它大模型并且是免费或付费的,只要配置api url和 api key即可,请参考langchain相关资料,本文因为我笔记本上没有gpu,也不想花钱买tokens,因此使用ollama来下载和管理模型,测试效果方面和chatgpt,llama等模型在逻辑上是一样的.

获取Embedding模型
为什么要安装llm和Embedding两种模型?
两者的区别在于:LLM 的目的是生成文本,而不是直接提供文本的向量表示。虽然有些 LLM 可能具有一定的文本表示能力,但它们的主要目标不是优化文本的向量表示。而 Embedding 模型专门设计用于生成高质量的文本向量表示,在计算相似度等任务上表现更好
注1:安装ollama请参考我的另外一篇文章:
step4)安装依赖.

安装相关依赖--包含langchain,向量数据库等
step5)运行服务.

启动RAG AI 搜索应用

chainlit chat运行效果