从文本到向量:理解Embedding
作者:程序员马丁
note
Ragent AI —— 从 0 到 1 纯手工打造企业级 Agentic RAG,拒绝 Demo 玩具!AI 时代,助你拿个offer。
上一节我们聊了元数据管理——怎么给每个 chunk 贴上标签,让它从“一段裸文本”变成“一段带上下文的文本”。到这一步,每个 chunk 都带着来源、权限、位置等信息了,看起来已经很完整。
但有个根本问题还没解决:这些文本还是人类语言,计算机看不懂。
你让计算机去比较“七天无理由退货”和“买了一周的东西还能退吗”这两句话,它只会逐字比对,发现没几个字是一样的,然后告诉你不相关。可任何一个正常人都知道,这两句话说的是同一件事。
怎么让计算机也能理解这种语义上的相似性?答案是把文本转成一组数字——向量(Vector)。这个转换过程,就叫向量化(Embedding)。
关键词检索的困境:为什么文本匹配不够用
在讲向量化之前,咱们先看看不用向量化的传统检索方式有什么问题。这样你才能理解,为什么 RAG 系统非要多这么一步。
1. 场景:电商客服知识库的检索难题
还是用前两篇的电商客服知识库场景。假设知识库里有这么一条规则:
自签收之日起 7 天内,商品未经使用且不影响二次销售的,消费者可申请七天无理由退货。
现在用户问了一句:“买了一周的东西还能退吗?”
如果用传统的关键词检索(比如 Elasticsearch 的全文搜索),系统会把用户的问题拆成关键词:“买”“一周”“东西”“退”,然后去知识库里找包含这些词的文本块。
结果呢?知识库里那条规则用的是“七天”“签收”“无理由退货”这些词,和用户问题里的“一周”“东西”“退”几乎没有重叠。关键词检索大概率找不到这条规则,或者把它排在很后面。
但这两句话明明说的是同一件事。