## 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`等全局变量。 - 函数处理过程中可能会产生大量日志,建议监控日志以便及时发现和解决问题。 - 调用此函数可能需要较长的处理时间,特别是当知识库文件数量较多时。 **输出示例**: ```json { "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`参数的设置,以确保摘要生成的效果符合预期。 **输出示例**: ```json { "code": 200, "msg": "test.pdf 总结完成", "doc": "test.pdf" } ``` 或在知识库不存在时: ```json { "code": 404, "msg": "未找到知识库 ‘samples’" } ``` ### FunctionDef output **output**: 此函数的功能是输出知识库摘要的处理结果。 **参数**: 此函数没有参数。 **代码描述**: `output` 函数是知识库摘要API中的一个关键组成部分,主要负责输出知识库摘要的处理结果。首先,通过 `KBServiceFactory.get_service` 方法获取知识库服务实例。如果指定的知识库不存在且不允许空知识库,则返回404状态码和相应的错误信息。如果知识库存在或允许空知识库,函数将继续执行以下步骤: 1. 使用 `KBSummaryService` 创建或更新知识库摘要。 2. 通过 `get_ChatOpenAI` 方法初始化两个语言模型实例,用于生成和优化文本摘要。 3. 使用 `SummaryAdapter.form_summary` 方法配置文本摘要的生成流程。 4. 通过 `KBService.list_docs` 方法获取指定文件的文档列表。 5. 调用 `SummaryAdapter.summarize` 方法生成文档摘要。 6. 将生成的文档摘要添加到知识库摘要中,并检查操作是否成功。 如果知识库摘要添加成功,函数将记录日志信息并返回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`函数可能会返回如下格式的响应: ```json { "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、摘要内容和相关的元数据信息。