12 KiB
FunctionDef recreate_summary_vector_store(knowledge_base_name, allow_empty_kb, vs_type, embed_model, file_description, model_name, temperature, max_tokens)
recreate_summary_vector_store: 此函数的功能是重建单个知识库文件摘要。
参数:
knowledge_base_name: 知识库的名称,类型为字符串。allow_empty_kb: 是否允许空的知识库,布尔类型,默认为True。vs_type: 向量存储类型,字符串类型,默认值由DEFAULT_VS_TYPE变量决定。embed_model: 嵌入模型名称,字符串类型,默认值由EMBEDDING_MODEL变量决定。file_description: 文件描述,字符串类型,默认为空字符串。model_name: LLM模型名称,字符串类型,默认值为LLM_MODELS列表的第一个元素。temperature: LLM采样温度,浮点数类型,必须在0.0到1.0之间。max_tokens: 限制LLM生成Token的数量,整数类型或None,默认为None,代表使用模型的最大值。
代码描述:
recreate_summary_vector_store函数主要用于重建指定知识库的文件摘要。首先,通过KBServiceFactory.get_service方法获取知识库服务实例。如果指定的知识库不存在且不允许空的知识库,则返回404错误。否则,会先删除现有的知识库摘要,然后重新创建。接着,利用指定的LLM模型参数创建文本摘要适配器,并对知识库中的每个文件进行摘要处理。每处理完一个文件,就会向客户端发送一个包含处理状态的JSON消息。如果在处理某个文件时出错,则会记录错误信息并跳过该文件。
此函数通过EventSourceResponse返回一个生成器,该生成器会逐步产生处理每个文件的状态信息,使得客户端可以实时获取处理进度。
在项目中,recreate_summary_vector_store函数被server/api.py/mount_filename_summary_routes中的mount_filename_summary_routes函数调用,并注册为FastAPI的一个POST路由。这表明该函数主要用于处理HTTP POST请求,用于在Web服务中重建知识库文件摘要。
注意:
- 确保在调用此函数之前,已经正确设置了
DEFAULT_VS_TYPE、EMBEDDING_MODEL、LLM_MODELS等全局变量。 - 函数处理过程中可能会产生大量日志,建议监控日志以便及时发现和解决问题。
- 调用此函数可能需要较长的处理时间,特别是当知识库文件数量较多时。
输出示例:
{
"code": 200,
"msg": "(1 / 10): example_file.txt",
"total": 10,
"finished": 1,
"doc": "example_file.txt"
}
此JSON表示第一个文件example_file.txt已经处理完成,总共需要处理10个文件。
FunctionDef output
output: 此函数的功能是输出知识库摘要的创建或更新过程中的状态信息。
参数: 此函数没有参数。
代码描述: output 函数是一个生成器,用于在知识库摘要的创建或更新过程中,逐步输出处理状态信息。首先,通过 KBServiceFactory.get_service 方法获取知识库服务实例。如果指定的知识库不存在且不允许空知识库,则生成并返回一个包含错误代码404和相应消息的字典。否则,会重新创建知识库摘要,包括删除旧的知识库摘要和创建新的知识库摘要。
接下来,函数初始化两个 ChatOpenAI 实例,llm 和 reduce_llm,用于生成和合并文本摘要。然后,通过 SummaryAdapter.form_summary 方法创建一个摘要适配器实例,用于处理文本摘要。
函数遍历知识库中的文件,对每个文件使用 kb.list_docs 方法获取文档信息,并通过摘要适配器的 summary.summarize 方法生成摘要。如果摘要成功添加到知识库摘要中,则输出一个包含成功状态的JSON字符串;如果在添加摘要过程中出错,则输出一个包含错误信息的JSON字符串。
此函数与项目中的其他组件紧密相关,特别是与知识库服务 (KBServiceFactory)、摘要生成 (ChatOpenAI 和 SummaryAdapter) 相关联。它通过调用这些组件的方法,实现了知识库摘要的自动化创建和更新过程,并通过生成器逐步返回处理状态,为知识库管理提供了实时反馈。
注意:
- 确保在调用此函数之前,知识库名称、嵌入模型等参数已正确配置,以确保能够正确初始化知识库服务和摘要生成器。
- 此函数作为生成器,需要在循环或迭代器中使用,以获取所有的状态信息。
- 在处理大量文件或大型知识库时,此函数可能需要较长时间执行,建议异步调用或在后台任务中执行。
FunctionDef summary_file_to_vector_store(knowledge_base_name, file_name, allow_empty_kb, vs_type, embed_model, file_description, model_name, temperature, max_tokens)
summary_file_to_vector_store: 此函数的功能是根据文件名称对单个知识库进行摘要,并将摘要结果存储到向量存储中。
参数:
knowledge_base_name: 知识库的名称,示例值为"samples"。file_name: 需要进行摘要的文件名称,示例值为"test.pdf"。allow_empty_kb: 是否允许空的知识库,默认为True。vs_type: 向量存储的类型,默认值由DEFAULT_VS_TYPE指定。embed_model: 嵌入模型的名称,默认值由EMBEDDING_MODEL指定。file_description: 文件的描述,默认为空字符串。model_name: LLM模型的名称,默认值为LLM_MODELS数组的第一个元素,用于指定使用的语言模型。temperature: LLM采样温度,取值范围为0.0至1.0,默认值由TEMPERATURE指定。max_tokens: 限制LLM生成的Token数量,若为None则代表使用模型的最大值,默认为None。
代码描述:
summary_file_to_vector_store函数主要负责将指定文件的内容进行摘要,并将摘要结果存储到向量存储中。首先,通过KBServiceFactory.get_service获取知识库服务实例。如果指定的知识库不存在且不允许空的知识库,则返回404错误。否则,使用KBSummaryService创建知识库摘要服务,并调用create_kb_summary方法重新创建知识库摘要。接着,初始化两个LLM模型实例用于生成摘要。通过SummaryAdapter.form_summary方法,结合LLM模型和文件描述,对文件内容进行摘要。最后,将摘要结果添加到知识库摘要中,并根据操作结果返回相应的状态码和信息。
在项目中,summary_file_to_vector_store函数被server/api.py/mount_filename_summary_routes对象调用,用于处理HTTP POST请求,实现根据文件名称对单个知识库进行摘要的API接口。这表明该函数是知识库管理功能中处理文件摘要的核心逻辑部分。
注意:
- 确保传入的
knowledge_base_name和file_name有效,以避免处理不存在的知识库或文件。 allow_empty_kb参数在知识库为空时特别有用,可以根据实际需求调整其值。- 调用此函数时,需要注意
model_name、temperature和max_tokens参数的设置,以确保摘要生成的效果符合预期。
输出示例:
{
"code": 200,
"msg": "test.pdf 总结完成",
"doc": "test.pdf"
}
或在知识库不存在时:
{
"code": 404,
"msg": "未找到知识库 ‘samples’"
}
FunctionDef output
output: 此函数的功能是输出知识库摘要的处理结果。
参数: 此函数没有参数。
代码描述: output 函数是知识库摘要API中的一个关键组成部分,主要负责输出知识库摘要的处理结果。首先,通过 KBServiceFactory.get_service 方法获取知识库服务实例。如果指定的知识库不存在且不允许空知识库,则返回404状态码和相应的错误信息。如果知识库存在或允许空知识库,函数将继续执行以下步骤:
- 使用
KBSummaryService创建或更新知识库摘要。 - 通过
get_ChatOpenAI方法初始化两个语言模型实例,用于生成和优化文本摘要。 - 使用
SummaryAdapter.form_summary方法配置文本摘要的生成流程。 - 通过
KBService.list_docs方法获取指定文件的文档列表。 - 调用
SummaryAdapter.summarize方法生成文档摘要。 - 将生成的文档摘要添加到知识库摘要中,并检查操作是否成功。
如果知识库摘要添加成功,函数将记录日志信息并返回200状态码、成功信息和文件名。如果在添加知识库摘要时发生错误,函数将记录错误信息并返回500状态码和错误信息。
注意:
- 在调用
output函数之前,需要确保知识库名称、向量存储类型和嵌入模型等参数已经正确配置。 get_ChatOpenAI方法返回的语言模型实例用于生成和优化文本摘要,确保传入的模型名称、温度和最大token数量等参数符合预期。SummaryAdapter.form_summary方法配置的文本摘要生成流程包括文档的格式化、摘要生成和摘要合并等步骤,需要根据实际需求调整参数。- 在处理大量文档或执行复杂的摘要生成任务时,应注意性能和资源消耗,可能需要优化算法或调整系统资源。
此函数在知识库摘要API中扮演着核心角色,通过综合利用知识库服务、语言模型和文本摘要适配器等组件,实现了知识库文档摘要的自动化生成和更新。
FunctionDef summary_doc_ids_to_vector_store(knowledge_base_name, doc_ids, vs_type, embed_model, file_description, model_name, temperature, max_tokens)
summary_doc_ids_to_vector_store: 此函数的功能是根据文档ID列表生成单个知识库的文档摘要,并将摘要信息存储到向量存储中。
参数:
knowledge_base_name: 知识库名称,字符串类型,默认示例为"samples"。doc_ids: 文档ID列表,列表类型,默认为空列表,示例值为["uuid"]。vs_type: 向量存储类型,字符串类型,默认值由DEFAULT_VS_TYPE变量决定。embed_model: 嵌入模型名称,字符串类型,默认值由EMBEDDING_MODEL变量决定。file_description: 文件描述,字符串类型,默认为空字符串。model_name: LLM模型名称,字符串类型,默认值为LLM_MODELS列表的第一个元素,用于描述使用的语言模型。temperature: LLM采样温度,浮点数类型,用于控制生成文本的多样性,默认值由TEMPERATURE变量决定,取值范围为0.0至1.0。max_tokens: 限制LLM生成Token数量,整型或None,默认为None代表模型最大值。
代码描述:
函数首先通过KBServiceFactory.get_service方法获取知识库服务实例。如果指定的知识库不存在,则返回404状态码和相应的错误信息。否则,函数将初始化两个ChatOpenAI实例,分别用于生成文档摘要和合并摘要。接着,使用SummaryAdapter.form_summary方法创建文本摘要适配器,并通过知识库服务实例的get_doc_by_ids方法获取文档信息。然后,将文档信息转换为DocumentWithVSId对象,并调用摘要适配器的summarize方法生成文档摘要。最后,将生成的文档摘要转换为字典格式并返回,状态码为200,表示操作成功。
注意:
- 确保传入的知识库名称、文档ID列表和向量存储类型等参数正确无误,以避免查询错误或操作失败。
- 在调用此函数之前,请确保知识库服务已正确配置,包括知识库存在性、向量存储类型和嵌入模型等。
- 函数依赖于
ChatOpenAI实例进行文档摘要的生成和合并,因此需要确保提供的模型名称、采样温度和Token数量限制等参数适合于所使用的语言模型。
输出示例:
调用summary_doc_ids_to_vector_store函数可能会返回如下格式的响应:
{
"code": 200,
"msg": "总结完成",
"data": {
"summarize": [
{
"id": "文档ID1",
"page_content": "这里是文档摘要内容...",
"metadata": {
"file_description": "文件描述信息",
"summary_intermediate_steps": "摘要中间步骤信息",
"doc_ids": "文档ID列表"
}
},
{
"id": "文档ID2",
"page_content": "这里是另一个文档的摘要内容...",
"metadata": {
"file_description": "文件描述信息",
"summary_intermediate_steps": "摘要中间步骤信息",
"doc_ids": "文档ID列表"
}
}
]
}
}
此输出示例展示了函数在处理完文档后返回的摘要结果格式,其中包含了文档的ID、摘要内容和相关的元数据信息。