/images/hugo/avatar.png

Mem0

从这一节开始我们学习另一个 Agent 长期记忆的开源工具 Mem0

1. Mem0 原理

依据 Mem0 Paper 中的介绍按照是否基于图,Mem0 分为两种架构。两种架构下都分为Extracttion 和 Update 两个阶段。

RagFlow Retriever

上面我们介绍了 ragflow 检索的 query 模块,这一节我们来介绍 search 的具体实现。

search 代码比较长,我们分成几个部分讲解:

  1. 初始化和工具方法
  2. search
  3. insert_citations
  4. rerank
  5. retrieval
  6. tag 接口

下面是每个方法的作用和入参说明:

RagFlow Full Text Query

rag\nlp 模块提供了 NLP 相关的功能,如分词、查询构造器等。前面我们已经介绍了 NLP 中的 RagTokenizer 分词器的实现。这一节我们来讲解与检索相关的功能实现。

1. NLP 模块

在具体讲解检索实现之前,我们先来看一下 NLP 这个模块的整体结构。

RagFlow NLP Tokenizer

RagTokenizer 是 Ragflow 实现的分词器,这一节我们来介绍它的实现。

1. Tokenizer

NLP 我了解的不多,所以我向 ChatGPT 提了以下问题:

1
2
3
1. 什么是 Tokenizer 
2. 传统的 Tokenizer 与 基于 LLM 的 Tokenizer 有什么区别 
3. 开源项目中,使用最多的传统 Tokenizer 和 LLM Tokenizer 分别是什么,请给出使用示例

下面是 ChatGPT 的回答,基本上能帮助我们理解分词器到底是什么。

RagFlow Raptor 召回增强

RagFlow 中,处理文档和知识的任务主要有三种类型:RAPTOR、Graphrag、标准 Chunking。前面我们学习了标准 chunk 的执行过程。从这一节开始我们来介绍 RAPTOR。