新特性

  1. GraphRAG 三元组检索 + 文档结构检索

新版本在原社区摘要增强的GraphRAG基础上,引入了文档结构(Document Structure)索引,提升了知识图谱的丰富度和知识召回的完备性,并继续兼容基于AntV G6引擎的知识图谱渲染逻辑,让复杂数据关系一目了然。

回顾上个版本(DB-GPT 0.6.0),GraphRAG实现图社区摘要和混合检索的功能,解决了面向总结性查询(QFS)的问题。这次我们依据标准格式文件(目前对 Markdown 文件支持最好)中章节段落的层级信息,将文件结构组织为有向图,并写入到知识图谱(基于TuGraph底座)。图中的节点可以是文件的一个分片(chunk),边则代表了不同切分(chunk)之间在原文档中的结构关系。

V0.6.1 版本更新 - 图1

(三元组结构:entity -[relation]-> entity;文档结构:document -> chunk -> chunk)

如图所示,我们拓展了 GraphRAG 中对于 Graph 的定义范畴:知识图谱(Knowledge Graph) = 三元组有向图 (Triplets Graph)+ 文档结构图(Document Structure Graph)。未来我们希望构建一个更加复杂、覆盖更加全面的信息的 Graph,以便支持更加复杂的检索算法。

用户可以快速地在 DB-GPT 多前端应用中体验到该功能。生成的知识图谱将由 AntV G6 引擎驱动前端中渲染出来,以方便用户清晰直观地观察到图的可视化。

知识图谱构建与可视化(基于 qwen-max 模型):

V0.6.1 版本更新 - 图2

知识图谱对话(基于 qwen-max 模型):V0.6.1 版本更新 - 图3

针对我们的更新的内容和功能,我们对于以下.env环境变量做一个说明:

  • GRAPH_COMMUNITY_SUMMARY_ENABLED=True
    • 开启社区总结功能。基于指定的算法(默认 Leiden 算法),这个功能将会从知识图谱中找出社区,并通过 LLM 总结社区内容。
  • TRIPLET_GRAPH_ENABLED=True
    • 开启三元组图的构建和检索功能。
  • DOCUMENT_GRAPH_ENABLED=True
    • 开启文档结构图的构建和检索功能。
  • KNOWLEDGE_GRAPH_CHUNK_SEARCH_TOP_SIZE=5
    • 文档检索返回的 topk值。

快速使用:V0.6.1 版本更新 - 图4

选择“知识图谱”,名称不能只有数字(TuGraph 不接受不合规的名字)。

V0.6.1 版本更新 - 图5

推荐上传 markdown 文档,我们对 markdown 做了优化,效果更好。

V0.6.1 版本更新 - 图6

需要等待好一段时间,请不要取消。

V0.6.1 版本更新 - 图7

开始聊天。提示,最好问和知识图谱相关的问题。

  1. 新增**RAG**召回和 **Agent**答案评测功能

在v0.6.1版本中,新增了RAG的召回评测以及Agent的评测功能。召回的文本中是否包含用户问题对应的答案严重影响着最终LLM回答效果。文本切块策略、向量化模型、混合召回策略等因素都会影响最终的召回效果。因此,召回环节的评估流程可以不断优化召回的各个环节,是构建RAG系统的必要步骤。

目前DB-GPT指标模块支持RAG召回指标以及Agent答案指标

**RAG**召回指标(RetrieverEvaluationMetric�):

  • RetrieverHitRateMetric�:命中率衡量的是RAG <font style="color:rgb(37, 41, 51);">retriever</font>召回出现在检索结果前top-k个文档中的比例。
  • RetrieverMRRMetric�: <font style="color:rgb(37, 41, 51);">Mean Reciprocal Rank</font>通过分析最相关文档在检索结果里的排名来计算每个查询的准确性。更具体地说,它是所有查询的相关文档排名倒数的平均值。例如,若最相关的文档排在第一位,其倒数排名为 1;排在第二位时,为 1/2;以此类推。
  • RetrieverSimilarityMetric�: 相似度指标计算,计算召回内容与预测内容的相似度。

**Agent**答案指标:

  • AnswerRelevancyMetric�:智能体答案相关性指标,通过智能体答案与用户提问的匹配程度。高相关性的答案不仅要求模型能够理解用户的问题,还要求其能够生成与问题密切相关的答案。这直接影响到用户的满意度和模型的实用性

使用教程:

1.RAG召回评测

  • http方式
  1. POST /api/v2/serve/evaluate/evaluation
  1. SPACE_ID={YOUR_SPACE_ID}
  2. curl --location --request POST 'http://localhost:5670/api/v2/serve/evaluate/evaluation' \
  3. --header 'Content-Type: application/json' \
  4. -d'{
  5. "scene_key": "recall",
  6. "scene_value": "'$SPACE_ID'",
  7. "context":{"top_k":5},
  8. "evaluate_metrics":["RetrieverHitRateMetric","RetrieverMRRMetric","RetrieverSimilarityMetric"],
  9. "datasets": [{
  10. "query": "what awel talked about",
  11. "doc_name":"awel.md"
  12. }]
  13. }'
  • python方式
  1. from dbgpt.client import Client
  2. from dbgpt.client.evaluation import run_evaluation
  3. from dbgpt.serve.evaluate.api.schemas import EvaluateServeRequest
  4. DBGPT_API_KEY = "dbgpt"
  5. client = Client(api_key=DBGPT_API_KEY)
  6. SPACE_ID={YOUR_SPACE_ID}
  7. request = EvaluateServeRequest(
  8. # The scene type of the evaluation, e.g. support app, recall
  9. scene_key="recall",
  10. # e.g. app id(when scene_key is app), space id(when scene_key is recall)
  11. scene_value=SPACE_ID,
  12. context={"top_k": 5},
  13. evaluate_metrics=[
  14. "RetrieverHitRateMetric",
  15. "RetrieverMRRMetric",
  16. "RetrieverSimilarityMetric",
  17. ],
  18. datasets=[
  19. {
  20. "query": "what awel talked about",
  21. "doc_name": "awel.md",
  22. }
  23. ],
  24. )
  25. data = await run_evaluation(client, request=request)

2.Agent答案相关性评测

  • http方式
  1. APP_ID={YOUR_APP_ID}
  2. PROMPT_ID = {YOUR_PROMPT_ID}
  3. curl --location --request POST 'http://localhost:5670/api/v2/serve/evaluate/evaluation' \
  4. --header 'Authorization: Bearer dbgpt' \
  5. --header 'Content-Type: application/json' \
  6. -d '{
  7. "scene_key": "app",
  8. "scene_value": "'$APP_ID'",
  9. "context":{"top_k":5, "prompt":"'$PROMPT_ID'","model":"zhipu_proxyllm"},
  10. "evaluate_metrics":["AnswerRelevancyMetric"],
  11. "datasets": [{
  12. "query": "what awel talked about",
  13. "doc_name":"awel.md"
  14. }]
  15. }'
  • python方式
  1. APP_ID={YOUR_APP_ID}
  2. PROMPT_ID = {YOUR_PROMPT_ID}
  3. curl --location --request POST 'http://localhost:5670/api/v2/serve/evaluate/evaluation' \
  4. --header 'Authorization: Bearer dbgpt' \
  5. --header 'Content-Type: application/json' \
  6. -d '{
  7. "scene_key": "app",
  8. "scene_value": "'$APP_ID'",
  9. "context":{"top_k":5, "prompt":"'$PROMPT_ID'","model":"zhipu_proxyllm"},
  10. "evaluate_metrics":["AnswerRelevancyMetric"],
  11. "datasets": [{
  12. "query": "what awel talked about",
  13. "doc_name":"awel.md"
  14. }]
  15. }'

评测更多说明参考 https://www.yuque.com/eosphoros/dbgpt-docs/czgl7bsfclc1xsmh

  1. 支持OceanBase向量数据库兼容4.3.3.0版本

    OceanBase向量数据库发布了4.3.3版本

  1. 支持Qwen2.5b
  1. LLM_MODEL=qwen2.5-7b-instruct
  1. 支持将**stop**参数传递给 proxyllm

🐞 Bug 修复

  1. 修复了页面多文档上传分片前端问题
  2. 修复了Tongyi embedding模型bug
  3. 修复了docx文档特殊格式解析问题
  4. 修复解决了vllm推理问题
  5. 解决了doc_token字段不为空的问题

🛠️其他更新说明

文档更新

✨**官方文档地址**

:::color2 英文

:::

Overview | DB-GPT

:::color2 中文

:::

概览

✨**致谢**

感谢所有贡献者使这次发布成为可能!

@517739, @Aries-ckt, @GITHUBear, @Hopshine, @KingSkyLi, @csunny, @fangyinc, @fanzhidongyzby, @iCanDoAllThingszz, @lhwan, @mzaispace, @nightosong and @noahc1510 @appointat

V0.6.1 版本更新 - 图8

✨**附录**