Deepwriter

本章节详细介绍了 HRAG 系统中的 Deepwriter 组件。

Deepwriter 是一个基于大语言模型(LLM)和向量数据库的自动报告生成工具。它从非结构化文档中提取语义信息,通过用户提供的查询,自动撰写结构化文本报告。

使用说明

输入参数

你可以通过命令行参数或直接在代码中设置以下参数:

  • –output_path:报告输出路径(必填)

  • –query:用户查询文本,用于驱动报告生成(必填)

  • –host:Milvus 服务器地址(默认:localhost)

  • –port:Milvus 端口(默认:19530)

  • –user:Milvus 用户名(默认:空)

  • –password:Milvus 密码(默认:空)

  • –embedding_model:嵌入模型名称(默认:Alibaba GME)

  • –llm:用于生成报告的语言模型(默认:ollama/qwen2:7b)

  • –base_url:LLM 服务的基础 URL(默认:None)

组件结构

  1. MilvusDB:用于管理图文向量数据的检索和存储。

  2. DocFinder:通过向量检索获取上下文信息,支持语义相似度排序。

  3. DeepWriter:结合 LLM,根据用户查询和检索到的上下文信息生成结构化报告。

  4. ReportProcessor:对生成报告进行后处理,并保存为 Markdown 格式。

  5. 日志系统:使用 loguru 记录流程信息,默认日志输出至 logs/report_generation_demo.log

使用示例

你可以通过调用 tests/deepwriter/test_deepwriter.py 中的主函数 main() 来生成报告,示例代码如下:

if __name__ == "__main__":
    query = "What is the total trade volume of the world in 2024?"
    main(query)

报告将保存至 output/ 目录下,文件名为 report.md。如已有同名文件,将自动添加编号后缀以避免覆盖。

输出结果

生成内容包括:

  • 报告正文:Markdown 格式文件 report.md

  • 报告元信息:metadata.json,包含查询语句、使用模型、报告路径等信息

日志文件

日志记录默认输出到:

logs/report_generation_demo.log

可用于问题排查和流程追踪。

注意事项

  • 当前仅支持基于 GME 的嵌入模型。

  • LLM 服务必须支持 RESTful API 接口。

  • 多模态嵌入模型和文本嵌入模型应保持一致配置。

  • 文档数据库需提前构建并包含有效数据。