Canopy 项目介绍
Canopy 是一个开源的检索增强生成(Retrieval Augmented Generation, RAG)框架,它基于 Pinecone 矢量数据库构建。该框架旨在加速和简化 RAG 应用程序的开发,用户只需通过几个简单的命令,就能够使用文档或文本数据进行交互。
项目功能概览
Canopy 主要负责构建 RAG 应用的繁重工作,包括文本数据划分和嵌入、聊天记录管理、查询优化、上下文检索(例如提示工程)以及增强生成等。Canopy 提供了一个可配置的内置服务器,用户可以轻松将一个 RAG 驱动的聊天应用部署到现有的聊天界面中,或者使用 Canopy 库构建自己的定制 RAG 应用。此外,Canopy 还提供了一个 CLI 工具,用户可以用它来评估他们的 RAG 工作流,并与非 RAG 工作流进行比较。
RAG 流程与 Canopy
Canopy 实现了完整的 RAG 流程,以防止虚构内容并增强语言模型(LLM)的表现。Canopy 有两个主要流程:知识库创建和聊天。在知识库创建流程中,用户上传文档,并将其转化为有意义的表示形式,存储在 Pinecone 的矢量数据库中。在聊天流程中,系统通过优化传入查询和聊天记录来检索最相关的文档,并生成有意义的上下文提交给 LLM 进行回答。
主要组成模块
Canopy 核心库
- ChatEngine:提供聊天界面以与数据交互。基于聊天消息历史,
ChatEngine
通过形成相关查询给ContextEngine
,然后使用 LLM 生成有知识性的响应。 - ContextEngine:执行 RAG 的“检索”部分,利用基础的
KnowledgeBase
来检索最相关的文档,并形成一段连贯的文本上下文,作为 LLM 的提示。 - KnowledgeBase:管理 RAG 流程中的数据,它会自动划分和转化文本数据到文本嵌入,并将其存储在 Pinecone(默认)或 Qdrant 的矢量数据库中。
Canopy 服务器
这是一个基于 FastAPI、Uvicorn 和 Gunicorn 构建的网络服务,它将 Canopy 核心库封装为一个 REST API,可以方便地部署在生产环境中,并配有内置的 Swagger UI,方便测试和文档查看。
Canopy CLI
一个内置的开发工具,允许用户快速设置自己的 Canopy 服务器并测试其配置。只需三个 CLI 命令,用户就可以创建新的 Canopy 服务器,上传文档,并通过内置的聊天应用在终端中与 Chatbot 互动。内置聊天机器人还可以将含 RAG 的响应与本机 LLM 聊天机器人进行比较。
快速入门
使用 Canopy 可以快速构建一个简单的基于 RAG 的问答系统。以下是使用指南:
-
创建新的 Canopy 索引:运行
canopy new
命令,并遵循 CLI 指导。 -
上传数据:使用
canopy upsert
命令将数据上传到 Canopy 索引中。支持jsonl
、parquet
和csv
格式的文件。 -
启动 Canopy 服务器:运行
canopy start
,即可使用任何支持/chat.completion
接口的聊天应用。
项目贡献与高阶使用
如果希望贡献到 Canopy 项目,请参考官方的贡献指南。此外,用户可以将已有的 OpenAI 应用迁移到 Canopy 或在生产环境中运行 Canopy 服务器,甚至利用 Canopy 的 Docker 镜像进行更高效的部署。
Canopy 提供了强大的功能和灵活的配置,是构建 RAG 应用程序的理想选择。通过使用 Canopy,开发者可以专注于构建业务逻辑,而将复杂的技术细节交给框架处理。