基于多模态向量检索的数学相似题推荐系统:完整设计、算法与实验
这就是我前段时间一直在弄的项目
公开说明:本文根据完整技术论文整理,保留研究方法、公式、算法、工程方案、实验数据和参考文献;已移除内部服务名、接口地址、环境编号、数据集代号、精确库存规模和产品原型链接。
摘要
随着在线教育题库规模不断扩大,如何从海量题目中快速、准确地寻找相似题,已经成为错题强化、智能组卷和题库维护中的关键问题。传统关键词匹配和 TF-IDF 方法难以理解题目的深层语义,也无法充分利用数学公式的结构信息以及知识点之间的层级关系。
本文设计并实现了一套基于多模态向量检索的数学相似题推荐系统。系统从三个维度表示题目:使用 BGE-M3 提取题干文本的语义向量;将 MathML 或 HTML 公式转换为表达式树,使用 GraphCodeBERT 编码公式结构路径;根据知识树的根到叶路径构建知识点向量。检索阶段先将三类向量加权拼接,在 Milvus 中完成大规模近似最近邻粗排,再分别计算文本、公式和知识点相似度进行精排。
针对知识点路径共享前缀而跨分支误召回的问题,本文引入分叉层级惩罚机制:两条路径越早分叉,惩罚越强;仅在叶子节点存在差异时,基本保留原有相似度。人工评估覆盖 1460 道题,整体 Hit@1、Hit@3、Hit@6 和 MRR 分别达到 0.71、0.85、0.91 和 0.79。在线查询平均响应时间约 300 ms,在 10 QPS、1000 次请求的压力条件下平均响应约 600 ms。
关键词:数学相似题推荐、多模态向量、BGE-M3、GraphCodeBERT、Milvus、知识树、近似最近邻
1. 研究背景
K12 在线教育题库通常包含文本、公式、图片、知识点标签、题型和学段等多类信息。相似题推荐主要服务于以下场景:
- 相似题绑定:题库编辑人员需要为原题绑定影子题或替换题,人工逐题比对成本很高。
- 智能组卷:根据母卷题目快速寻找同学段、同题型、难度相近的候选题,生成多套相似试卷。
- 错题强化训练:学生订正错题后,自动匹配同类题进行巩固。
- 学情分析:结合相似题作答情况,辅助判断学生对知识点的掌握程度。
传统方案存在三个核心缺陷。
首先,关键词匹配不能稳定处理同义表达。"求解二次方程"与"求一元二次方程的根"在语义上接近,但字面重合度并不高。其次,数学题的关键差异经常体现在公式结构上,仅编码题干文本容易丢失最重要的信息。最后,知识点不是互相独立的标签,而是具有父子关系和分支结构的知识树;"正弦定理"和"余弦定理"应当比"正弦定理"和"向量数量积"更相近。
因此,一个可用的数学相似题系统至少要同时回答三个问题:
- 两道题在自然语言层面是否表达相似?
- 两道题中的数学公式是否具有相近结构?
- 两道题在知识树中是否属于同一分支或相邻层级?
2. 相关技术与方案选择
2.1 传统信息检索
早期相似题检索通常采用关键词、倒排索引、TF-IDF 或向量空间模型。这类方法实现简单、检索效率高,适合字面匹配,但无法可靠理解上下文语义。即使使用分词、同义词词典和规则扩展,也很难覆盖数学题中大量灵活表达。
2.2 深度语义模型
Word2Vec、GloVe 等词向量能够表达词语相似性,但难以完整表示题目级语义。BERT 类预训练模型通过上下文编码显著改善了句子表示能力。本文选择 BGE-M3 作为文本编码器,主要考虑其中文语义能力、长文本支持和较成熟的向量检索生态。
2.3 公式结构建模
将公式直接作为普通文本输入语义模型,会让运算符、上下标和括号结构被弱化。另一类做法是把公式转成树或图,再编码运算符与操作数之间的关系。本文将 MathML 解析为二叉表达式树,从根到叶提取结构路径,再使用 GraphCodeBERT 编码这些路径。
2.4 向量数据库
系统需要在数十万规模题库中检索 2560 维融合向量。Faiss 适合单机算法验证,Milvus 提供持久化、元数据过滤、索引管理和分布式扩展能力,更适合工程服务。因此系统采用 Milvus 存储融合向量、精排向量和必要元数据。
3. 系统总体架构
公开版架构抽象如下:
text
┌──────────────────────────────┐
│ 题目数据与知识树 │
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ 多模态向量生成 │
│ 文本编码 / 公式编码 / 知识点编码 │
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ Milvus 向量存储与 ANN 索引 │
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ 融合向量粗排 + 多维相似度精排 │
└──────────────┬───────────────┘
│
┌──────────────▼───────────────┐
│ Top-k 相似题与各维度解释分数 │
└──────────────────────────────┘
系统由三个逻辑层组成:
- 向量生成层:并行生成文本向量、公式向量和知识点向量。
- 向量存储层:索引融合向量,并保存精排所需的独立向量、知识路径与元数据。
- 检索推荐层:先通过融合向量召回候选,再对候选进行多维精排。
这种分层设计将模型计算、向量存储和业务查询解耦。模型可独立升级,向量库可横向扩展,在线接口只需关注召回、精排与结果封装。
4. 文本向量生成
4.1 BGE-M3 编码
文本侧使用 BGE-M3。题目可能同时包含中文、英文符号、HTML 和数学公式,因此在编码前必须先进行预处理。
处理步骤如下:
- 使用解析器识别
<math>、<sub>、<sup>等公式或 HTML 标签。 - 提取公式内容,交给公式编码模块。
- 从题干中移除公式和无意义标签,保留自然语言描述。
- 清理空白、控制字符和与语义无关的格式符号。
- 将纯文本输入 BGE-M3,取得句向量并执行 L2 归一化。
最终文本向量为:
v_tinmathbbR1024 v\_t \\in \\mathbb{R}^{1024} v_tinmathbbR1024
分离文本与公式有三个好处:一是避免复杂符号干扰自然语言编码;二是让公式结构由专门模型处理;三是精排时可以分别解释语义相似度和公式相似度。
5. 数学公式结构向量
5.1 公式提取与统一
题目中可能同时存在 MathML 与 HTML 形式的公式。系统先直接提取 MathML;对 HTML 上下标表达进行规范化,并在满足长度、字符和结构校验后转换为 MathML。所有公式进入统一解析流程。
5.2 MathML 转二叉树
解析器将运算符作为非叶子节点,将数字和变量作为叶子节点,并按照运算符优先级构造二叉表达式树。以下公式作为示例:
fracx2+5x+6x2−5x+4+fracx+1(x−4)2 \\frac{x^2+5x+6}{x^2-5x+4}+\\frac{x+1}{(x-4)^2} fracx2+5x+6x2−5x+4+fracx+1(x−4)2
对应的表达式树如下:

根节点为加法;左右子树分别表示两个分式;分式下继续展开分子、分母、幂运算和乘法关系。相比扁平字符串,这种结构保留了运算层级。
5.3 路径归一化
同一结构可能有多种书写顺序。例如 a+b 与 b+a 在交换律下等价。系统对加法、乘法等可交换运算符的子树进行稳定排序,使等价结构生成一致的路径。

在路径归一化之后,再进行变量和常量归一化:
- 所有数字替换为
α; - 所有变量替换为
β; - 运算符和层级结构保持不变。

因此,x²+1 与 y²+2 会获得相同的归一化结构。系统更关注"平方后加常量"这一模式,而不是具体变量名或数值。
5.4 根到叶路径编码
从归一化表达式树中提取每条根到叶路径。例如:
text
+ → / → + → + → α
+ → / → + → + → ^ → β
+ → / → + → α
GraphCodeBERT 分别编码路径中的节点。设路径节点为 n_0,n_1,ldots,n_Ln\_0,n\_1,\\ldots,n\_Ln_0,n_1,ldots,n_L,第 lll 层节点权重为 2l2^l2l,则单条路径表示可以写成:
v_path=fracsum_l=0L2loperatornameEnc(n_l)left∣sum_l=0L2loperatornameEnc(n_l)right∣2 v\{path}=\\frac{\\sum\_{l=0}^{L}2^l\\operatorname{Enc}(n\l)}{\\left|\\sum\{l=0}^{L}2^l\\operatorname{Enc}(n\_l)\\right|\_2} v_path=fracsum_l=0L2loperatornameEnc(n_l)left∣sum_l=0L2loperatornameEnc(n_l)right∣_2
深层节点通常表示更具体的操作,因此获得更高权重。一个公式包含多条路径时,按路径深度的三次方加权融合;一道题包含多个公式时,再按各公式的路径数量进行融合。
最终公式向量为:
v_finmathbbR768 v\_f \\in \\mathbb{R}^{768} v_finmathbbR768
6. 知识点路径向量
6.1 知识树表示
知识点不是独立标签,而是一棵具有层级关系的树。例如:
text
平面向量与解三角形
├── 平面向量
│ ├── 平面向量线性运算
│ │ ├── 加减运算
│ │ └── 数乘运算
│ └── 数量积
│ ├── 直接计算
│ └── 数量积综合
└── 解三角形
├── 正弦定理
├── 余弦定理
└── 解三角形综合
系统从叶节点向上回溯到根节点,获得完整知识路径,并记录节点名称、深度和顺序。一道题包含多个知识点时会生成多条路径。
6.2 路径语义编码
知识路径被序列化为:
text
数学 - 代数 - 函数 - 一次函数
然后使用 BGE-M3 编码路径语义。多条路径采用平均池化,最终得到:
v_kinmathbbR768 v\_k \\in \\mathbb{R}^{768} v_kinmathbbR768
6.3 前缀加权的局限
为了强调具体知识点,系统曾尝试三种前缀加权:
w_l=l,qquadw_l=l2,qquadw_l=l3 w\_l=l,\\qquad w\_l=l^2,\\qquad w\_l=l^3 w_l=l,qquadw_l=l2,qquadw_l=l3
对于节点序列 n_0,n_1,ldots,n_L{n\_0,n\_1,\\ldots,n\_L}n_0,n_1,ldots,n_L,加权路径向量为:
v_path(m)=frac1Z(m)sum_l=0Lw_l(m)operatornameEnc(n_l) v\{path}^{(m)}=\\frac{1}{Z^{(m)}}\\sum\{l=0}^{L}w\_l^{(m)}\\operatorname{Enc}(n\_l) v_path(m)=frac1Z(m)sum_l=0Lw_l(m)operatornameEnc(n_l)
平方或立方加权能提高深层知识点的影响,但跨分支路径仍可能因为共享根节点和较长前缀而保持较高余弦相似度。这说明仅修改向量编码方式不足以显式表达"在哪一层分叉"。
7. 分叉层级惩罚机制
系统在精排阶段显式计算知识路径第一次分叉的位置。
首先计算知识点向量余弦相似度:
s_cos=fracv_k1cdotv_k2∣v_k1∣∣v_k2∣ s\{cos}=\\frac{v\{k1}\\cdot v\{k2}}{|v\{k1}||v\_{k2}|} s_cos=fracv_k1cdotv_k2∣v_k1∣∣v_k2∣
若两条路径完全一致,惩罚系数为 1;若在第 lll 层分叉,则:
KaTeX parse error: Expected 'EOF', got '&' at position 22: ...egin{cases} 1, &̲ \\text{路径完全一致}...
最终知识点相似度为:
s_k=s_costimesp s\k=s\{cos}\\times p s_k=s_costimesp
这意味着:
- 根节点或很浅层就分叉,得分会被强烈压制;
- 中间层分叉,保留部分语义相似度;
- 只在叶节点发生细粒度差异,惩罚接近 1;
- 一道题有多条知识路径时,选择最匹配路径对的惩罚系数,避免多知识点题目被过度惩罚。
对比结果如下:
| 方法 | 同一分支相似度 | 不同分支相似度 |
|---|---|---|
| 无加权(简单平均) | 0.95 | 0.90 |
| 线性前缀加权 | 0.95 | 0.88 |
| 平方前缀加权 | 0.95 | 0.86 |
| 立方前缀加权 | 0.95 | 0.82 |
| 分叉层级惩罚 | 0.93 | 0.45 |
前缀加权只能把跨分支相似度从 0.90 降到约 0.82;分叉惩罚进一步降到约 0.45,同时同分支仍保持在 0.9 以上,显著扩大两类样本的间隔。
8. 多模态融合向量
三类向量通过加权拼接构成粗排向量:
v_fusion=operatornameconcat(w_kv_k,w_fv_f,w_tv_t) v\_{fusion}=\\operatorname{concat}(w\_kv\_k,w\_fv\_f,w\_tv\_t) v_fusion=operatornameconcat(w_kv_k,w_fv_f,w_tv_t)
权重通过实验搜索得到:
| 向量类型 | 维度 | 权重 | 用途 |
|---|---|---|---|
| 文本向量 | 1024 | 0.28 | 语义精排 |
| 公式向量 | 768 | 0.19 | 结构精排 |
| 知识点向量 | 768 | 0.53 | 知识路径精排 |
| 融合向量 | 2560 | - | ANN 粗排索引 |
拼接后执行 L2 归一化:
v_fusion=fracv_fusion∣v_fusion∣2 v\{fusion}=\\frac{v\{fusion}}{|v\{fusion}|\_2} v_fusion=fracv_fusion∣v_fusion∣_2
知识点权重最高,是因为业务中的"相似题"首先要求知识目标一致;文本语义负责识别表达相近,公式向量则补充数学结构信息。权重并非适用于所有题库,实际系统应根据人工标注集重新搜索。
9. 粗排检索
9.1 候选召回
粗排阶段以融合向量在 Milvus 中搜索。若最终需要返回 Top-kkk,粗排先召回 Top-(50k)(50k)(50k) 候选,为精排保留足够空间。
检索前应用元数据过滤:
- 学科一致;
- 学段或年级满足业务约束;
- 题型一致或位于允许的兼容集合;
- 排除目标题目自身;
- 排除已删除、废弃或不可用题目。
9.2 IVF_PQ 索引
融合向量使用 IVF_PQ 索引。其过程包括:
- 使用倒排文件将向量空间划分为多个聚类;
- 对聚类内向量做乘积量化,压缩存储;
- 查询时只探测与查询向量接近的部分聚类;
- 返回近似最近邻候选。
实验配置采用:
text
nlist = 4096
m = 32
nbits = 8
与 HNSW 相比,IVF_PQ 更偏向节省存储并控制大规模检索成本;代价是需要针对 nlist、探测范围和召回率进行调优。
10. 多维精排算法
粗排只利用融合向量,精排重新计算三类独立相似度。
文本相似度:
s_t=fracv_t1cdotv_t2∣v_t1∣∣v_t2∣ s\t=\\frac{v\{t1}\\cdot v\{t2}}{|v\{t1}||v\_{t2}|} s_t=fracv_t1cdotv_t2∣v_t1∣∣v_t2∣
公式相似度:
s_f=fracv_f1cdotv_f2∣v_f1∣∣v_f2∣ s\f=\\frac{v\{f1}\\cdot v\{f2}}{|v\{f1}||v\_{f2}|} s_f=fracv_f1cdotv_f2∣v_f1∣∣v_f2∣
知识点相似度采用余弦相似度乘分叉惩罚系数。最终得分:
s=0.53s_k+0.19s_f+0.28s_t s=0.53s\_k+0.19s\_f+0.28s\_t s=0.53s_k+0.19s_f+0.28s_t
完整流程可以表示为:
text
输入:目标题目 Q,返回数量 k
1. 读取或生成 Q 的文本、公式、知识点与融合向量
2. 在 Milvus 中检索 Top-(50k) 候选 C
3. 对每个候选 c:
3.1 计算带分叉惩罚的知识点相似度 s_k
3.2 计算公式结构相似度 s_f
3.3 计算文本语义相似度 s_t
3.4 计算最终分数 s
4. 按 s 降序排序
5. 返回 Top-k,并附带三个分项分数
返回分项得分有利于问题诊断。例如,文本分高但知识点分低,往往意味着表述相似却属于不同知识分支;公式分高但文本分低,可能是同一计算结构出现在不同情境中。
11. 系统实现
11.1 技术栈
公开版实现使用:
- Python 3.12;
- Flask 2.3;
- PyTorch 2.0;
- BGE-M3;
- GraphCodeBERT;
- Milvus 2.3;
- BeautifulSoup4 与 lxml;
- latex2mathml;
- NumPy 与 scikit-learn;
- PyYAML、python-dotenv 和 Python logging。
11.2 向量初始化
系统支持四种向量生成模式:
- 实时生成:新题进入题库后立即生成向量。
- 批量初始化:历史数据按学段、学科分页处理。
- 增量更新:题干、公式或知识点变化后重新生成。
- 断点续传:记录上一批最后一个题目游标,中断后继续处理。
批量处理采用基于主键游标的分页,而不是大偏移量的 LIMIT/OFFSET。每批读取固定数量题目,完成向量生成和写库后再推进游标。这种方式在大表中更加稳定,也便于故障恢复。
11.3 存储策略
融合向量作为 Milvus 的 FLOAT_VECTOR 字段建立索引。文本、公式和知识点独立向量用于精排,可根据向量库版本与成本选择独立向量字段或序列化存储。学科、学段、题型等高频过滤属性使用独立标量字段,避免每次查询解析大块 JSON。
11.4 部署与安全
系统采用"向量数据库 + 推荐服务"的部署形式。Milvus 以容器方式运行,推荐服务由 WSGI 容器承载。模型路径、数据库地址和凭据通过配置或密钥管理系统注入。
公开部署建议:
- 启用数据库身份认证;
- 仅向受信网络开放数据库端口;
- 不在代码、日志和镜像中保存凭据;
- 在线接口增加调用方认证、限流和审计;
- 批量初始化接口与在线查询接口隔离权限;
- 对输入 HTML、MathML 和超长文本设置大小限制。
公开稿不包含真实内网地址、端口、表名、内部服务名和业务接口路径。
12. 性能优化
系统采用以下优化策略:
- 模型缓存:模型首次加载后常驻内存,避免重复初始化。
- 向量复用:目标题已存在向量时直接查询。
- 批量编码:文本和公式尽可能批量送入模型,提高 GPU 利用率。
- 异步初始化:历史数据初始化不阻塞在线请求。
- 索引调优:根据题库规模与召回目标调整 IVF_PQ 参数。
- 线程池限制:控制后台并发,避免模型、数据库和 CPU 争用。
- 向量校验:精排前检查维度、空值、NaN 和序列化格式。
- 游标分页:避免大 OFFSET 导致数据库扫描成本不断增长。
- 元数据前置过滤:在向量搜索前缩小候选空间。
- 可观测性:分别记录向量生成、粗排、精排和数据库访问耗时。
13. 实验设计
13.1 实验环境
实验在受控服务器环境的单个计算节点完成,公开配置如下:
| 项目 | 配置 |
|---|---|
| CPU | 2 × AMD EPYC 7513,128 逻辑 CPU |
| 内存 | 188 GB |
| GPU | 2 × NVIDIA RTX A6000,单卡约 49 GB 显存 |
| 操作系统 | Ubuntu 18.04.6 LTS,x86_64 |
| 运行环境 | Python 3.12、PyTorch 2.0、Conda 独立环境 |
13.2 数据集
实验使用经授权、去标识化的数十万规模数学题库快照,覆盖小学、初中和高中,题型包括选择题、填空题和解答题。多数题目具有知识点标注,题干包含文本、MathML 和 HTML 公式。
公开稿不披露组织名称、内部数据集编号、生产数据来源和精确库存规模。
13.3 评估指标
采用以下指标:
- Hit@K :前 KKK 个候选中至少出现一个人工认可相似题的比例。
- MRR :若正确结果排名为 rrr,单题得分为 1/r1/r1/r;未命中为 0。
- 平均响应时间:单次推荐接口端到端耗时。
- 组卷成功率:母卷所有题目均找到可用相似题并形成完整候选卷的比例。
14. 人工评估结果
人工评估覆盖 1460 道题。每道题返回 Top-6 候选,由一线数学教师选择最合适的结果;若均不合适,则标记为未命中。
14.1 命中位置分布
| 位置 | Top1 | Top2 | Top3 | Top4 | Top5 | Top6 | 未命中 |
|---|---|---|---|---|---|---|---|
| 数量 | 1036 | 146 | 60 | 38 | 26 | 26 | 128 |
| 占比 | 71.0% | 10.0% | 4.1% | 2.6% | 1.8% | 1.8% | 8.8% |
Top-3 共命中 1242 道题,Hit@3 约为 0.85;Top-6 共命中 1332 道题,Hit@6 约为 0.91。
14.2 分学段结果
| 学段 | 样本数 | Hit@1 | Hit@3 | Hit@6 | MRR |
|---|---|---|---|---|---|
| 初中 | 504 | 0.77 | 0.89 | 0.93 | 0.83 |
| 高中 | 3 | 0.67 | 0.67 | 0.67 | 0.67 |
| 小学低段 | 370 | 0.74 | 0.86 | 0.91 | 0.81 |
| 小学高段 | 583 | 0.64 | 0.81 | 0.89 | 0.73 |
| 总体 | 1460 | 0.71 | 0.85 | 0.91 | 0.79 |
整体上,约九成题目在 Top-6 中可以给出教师认可的相似题,而且大部分命中集中在前三位。初中和小学低段表现较好,小学高段略低。高中样本只有 3 道,统计波动极大,不能据此判断真实效果,后续必须补充样本。
14.3 响应时间
普通单题推荐平均响应约 300 ms。在 10 QPS、1000 次请求的压力条件下,平均响应约 600 ms,仍满足一般实时推荐需求。
15. 结果分析与误差来源
系统效果提升主要来自三个方面:
- 文本模型解决同义表达和长题干理解问题;
- 公式树归一化识别变量、常量不同但结构一致的公式;
- 分叉层级惩罚压制语义相近但知识目标不同的候选。
仍未命中的题目通常属于以下类型:
- 知识点标注缺失、错误或粒度不一致;
- 题目依赖几何图、统计图等视觉信息;
- 公式抽取失败或 HTML 格式不规范;
- 同一题型内部难度跨度过大;
- 题干文本很短,语义信息不足;
- 人工评估标准在"解法相同""知识点相同"和"难度相同"之间不完全一致。
这些问题说明,相似题并不是单一数学距离,而是一个受业务定义约束的多目标问题。
16. 应用价值
该系统可用于:
- 在题目详情页提供 Top-k 相似题候选,由编辑人员复核绑定;
- 根据母卷逐题生成候选相似卷,缩短人工组卷时间;
- 批量发现题库中的重复题和高相似题;
- 错题订正后推荐结构和知识点相近的强化练习;
- 通过各维度得分解释推荐原因。
公开稿不披露具体产品地址、内部环境编号或客户信息。
17. 局限与后续工作
后续可以从以下方向继续优化:
- 引入图片模态:使用视觉模型处理几何图、函数图像和统计图。
- 动态融合权重:根据学段、题型或题目内容,通过门控网络学习权重。
- 交叉编码精排:对少量候选使用更强的 cross-encoder,提高边界样本区分能力。
- 难度建模:将题目难度、步骤数和认知层级作为独立维度。
- 在线学习:根据教师复核、点击和绑定行为更新排序模型。
- 强化评估设计:建立平衡的分层测试集,增加双人标注、一致性分析和置信区间。
- 跨学科验证:扩展到物理、化学等公式密集型学科。
- 可解释性展示:可视化知识路径分叉点、公式树匹配和分项得分。
- 数据质量治理:识别错误知识点、损坏公式和重复题目。
18. 总结
本文给出了一套可落地的数学相似题推荐方案。核心思路不是把所有信息压缩成单一文本,而是分别建模文本语义、公式结构和知识树路径,再用融合向量完成高效粗排,用三维独立相似度完成可解释精排。
分叉层级惩罚机制直接利用知识树结构,解决了共享前缀导致的跨分支高相似问题。人工评估表明,系统整体 Hit@6 达到 0.91,MRR 达到 0.79,平均响应时间能够满足在线检索要求。
从工程角度看,这套方案兼顾了模型效果、检索效率、增量更新、断点续传、部署安全和推荐解释性,可以作为教育题库、智能组卷和错题强化系统的基础架构。
参考文献
- Mikolov T., Chen K., Corrado G., Dean J. Efficient Estimation of Word Representations in Vector Space. 2013.
- Pennington J., Socher R., Manning C. D. GloVe: Global Vectors for Word Representation. EMNLP, 2014.
- Devlin J., Chang M. W., Lee K., Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. 2018.
- Johnson J., Douze M., Jégou H. Billion-scale Similarity Search with GPUs. IEEE Transactions on Big Data, 2019.
- Wang Q., Mao Z., Wang B., Guo L. Knowledge Graph Embedding: A Survey of Approaches and Applications. IEEE TKDE, 2017.
- BAAI General Embedding-M3. FlagEmbedding Project.
- Guo D., Ren S., Lu S., et al. GraphCodeBERT: Pre-training Code Representations with Data Flow. ICLR, 2021.
- Malkov Y. A., Yashunin D. A. Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs. IEEE TPAMI, 2018.
- Milvus: An Open-source Vector Database for Embedding Similarity Search and AI Applications.
版权说明:转载或引用时请注明本文标题与公开稿来源。