聊天服务是 PrivateGPT 的核心组件,提供带或不带摄取文档上下文检索的对话功能。本页面介绍了聊天服务的架构和功能,特别侧重于其检索增强生成(RAG)管道的实现。
有关使文档可用于聊天上下文的摄取过程的信息,请参阅摄取服务。
聊天服务使用户能够与语言模型交互,并可选择使用从向量存储中检索到的文档上下文。它支持标准对话响应(不带文档上下文)和上下文增强响应,其中检索到相关文档块并包含在提示中。
来源:private_gpt/server/chat/chat_service.py78-106
ChatService 类被实现为单例,作为 PrivateGPT 中聊天功能的主要入口点。
来源:private_gpt/server/chat/chat_service.py34-42 private_gpt/server/chat/chat_service.py44-75 private_gpt/server/chat/chat_service.py78-106
聊天服务使用两种主要返回类型:
这两种类型都包含一个可选的 sources 字段,在使用 RAG 时,该字段提供了构成响应的文档块的引用。
来源:private_gpt/server/chat/chat_service.py34-42
检索增强生成(RAG)管道是聊天服务的一个关键功能,它允许响应基于文档上下文。
来源:private_gpt/server/chat/chat_service.py108-147
向量索引检索器
context_filter 进行过滤以限制文档范围similarity_top_k 参数配置以控制结果数量节点后处理器
上下文聊天引擎
来源:private_gpt/server/chat/chat_service.py108-147
聊天服务提供两种主要的聊天交互方法:
在生成响应之前,聊天服务使用 ChatEngineInput 类处理输入消息
SYSTEM 的消息)来源:private_gpt/server/chat/chat_service.py50-75
聊天服务提供两种响应生成模式:
同步(chat 方法)
ChatEngineInputCompletion 对象流式传输(stream_chat 方法)
CompletionGen来源:private_gpt/server/chat/chat_service.py149-183 private_gpt/server/chat/chat_service.py185-217
聊天服务支持使用 ContextFilter 对象过滤文档上下文,该对象可以将检索限制为特定的文档 ID 或元数据条件。
两个参数控制检索到的上下文的相关性:
similarity_top_k:要检索的上下文块的最大数量similarity_value:包含块的最小相似度阈值启用后,重排功能使用句子转换器模型对检索到的文档应用第二阶段排序
来源:private_gpt/server/chat/chat_service.py121-135
聊天服务依赖于多个存储组件才能运行
存储系统在 ChatService 构造期间初始化
来源:private_gpt/components/node_store/node_store_component.py14-68
在初始化期间,聊天服务会执行以下操作:
来源:private_gpt/server/chat/chat_service.py82-106
| 功能 | 目的 | 何时使用 |
|---|---|---|
chat() | 完整响应生成 | 需要在显示前获得完整响应 |
stream_chat() | 流式响应生成 | 希望在生成时显示响应 |
_chat_engine(use_context=False) | 无上下文的简单聊天 | 仅需对话式 LLM |
_chat_engine(use_context=True) | 启用 RAG 的聊天 | 需要基于文档的答案 |
每个函数都接受消息输入,并返回一个 Completion 或 CompletionGen 对象,其中包含响应以及用于生成响应的任何源文档。