为什么要同时用"向量库 + 图数据库":互补,而不是重复
很多人会问:既然向量检索能找到相似文本,为啥还要图?
向量库擅长: Qdrant
模糊语义匹配:你换个说法也能召回
召回覆盖广:适合"先捞一批可能相关的"
图数据库擅长: Neo4j
精确关系查询:谁-是什么、谁-属于哪个项目、A和B的关系路径
可解释、多跳推理:能给出结构化依据
约束查询:比如"只要与张三相关、且是技能/职业类信息"
组合起来常见范式:
向量先召回(解决"找得到")
图再约束/补全/推理(解决"说得准、讲得清楚")
Embedding:把文本翻译成"语义坐标" 阿里百炼text-embedding-v3
Qdrant:用这些坐标做"语义相似检索",即向量数据库(记忆 & RAG 都用)
Neo4j:把抽取出的实体关系做成"可查询的知识图谱"(记忆更常用)
(比如从一句话里抽出 人名、职业、技术栈、项目名 等),然后写成图结构:
举个你这句最典型的图表示:
节点:(Person: 张三)、(Role: Python开发者)
边:(张三)-[:IS_A]->(Python开发者)
后续你问:
"我叫什么?" → 图里直接查 (Person) 的 name
"我会什么?" → 图里沿着关系扩展查技能/角色/项目
"张三和Python有什么关系?" → 图路径解释更自然
Neo4j 的核心价值:
把"可明确表达为关系"的信息,变成可查询、可约束、可解释的结构
支持多跳扩展:比如 人 -> 技能 -> 项目 -> 文档 这种链路