Hi. [RAG + 知识图谱] 不是向量搜索 + 全文检索哦。从术语上来讲是 GraphRAG[1] 。简单的来讲,我们的操作过程是预先为内容构建一个知识图谱(Knowledge Graph),这是一种图,在节点上是一些实体,在实体之间会存在一些关联。
随后回答问题的时候:
- 使用问题的 embedding vector,去寻找图中的最近邻 Top N 个节点
- 随后在图中扩散 K 度(我们的解决方案是不分出度和入度的,也就是无向图,你也可以选择有向图)
- 最后得到一批关联节点和它们之间的关系。
- (可选) Rerank 重排筛选需要的内容。
- 使用 LLM 生成回答。
对于 indexing 阶段构建知识图谱和 rerank 重排的资源问题,我们也是比较头痛的。但是自建去购卡对我们来说一个是我们的资源使用不是线性的,可能只有 indexing 阶段使用资源较多。另一个是有些性能好的模型并不开源。因此我们最后的解决方案是使用三方的 API。当前,我们使用的是 OpenAI 的 embedding[2] 模型和 Jina.AI 的 reranker[3] 模型。
最后就是我们的 tidb.ai[4] 是开源的,如果有兴趣的话可以看下呀。希望对你有帮助。
Edge, D., Trinh, H., Cheng, N., Bradley, J., Chao, A., Mody, A., Truitt, S., & Larson, J. (2024). From Local to Global: A Graph RAG Approach to Query-Focused Summarization. ArXiv. /abs/2404.16130 ↩︎