第二阶段:嵌入 (Embeddings) 与语义搜索 (Semantic Search)
当词汇无法完全匹配时,关键词搜索就会失效。
如果简历中写的是“团队管理 (team management)”,而职位描述要求的是“领导力 (leadership)”,基础搜索将返回零结果。词汇不同,但含义相同。
第二阶段通过使用嵌入 (embeddings) 和语义搜索来解决这个问题。
工作原理:
• 分词 (Tokenization):计算机并不阅读单词,它们阅读的是数字。分词器将文本分解成被称为 token 的小块,并将其转换为 Token ID。常用词会变成一个 token,而生僻词则会分解成多个 token。
• 嵌入 (Embeddings):Token ID 仅仅是一个标签。嵌入层将该 ID 转换为向量 (vector)。向量是一串代表含义的数字列表。模型不再使用单一的数字,而是使用多个维度来描述一个概念。
• 维度 (Dimensions):可以将这些数字视为坐标。一个维度可能代表“前端 vs 后端”,另一个维度可能代表“Web vs 系统”。高维向量允许模型在数学空间中将 “React” 和 “JavaScript” 放在彼此靠近的位置。
• 语义搜索 (Semantic Search):当你提出问题时,系统会将你的问题转换为一个向量。然后,它会将你的向量与存储文档的向量进行比较。
• 余弦相似度 (Cosine Similarity):这用于衡量两个向量之间的夹角。如果向量指向相同的方向,则它们是相似的。这使得系统即使在你只搜索“通知期 (notice period)”时,也能找到“离职要求 (resignation requirements)”。
生产环境的关键经验:
- 向量数据库 (Vector Databases):搜索数百万个向量速度很慢。像 Pinecone 或 Qdrant 这样的数据库使用索引技术在毫秒内找到最近邻。
- 模型迁移 (Model Migrations):每个嵌入模型都使用不同的数学空间。你不能将 OpenAI 的向量与 Cohere 的向量进行比较。如果你更换了模型,必须对所有数据进行重新嵌入 (re-embed)。
- 成本与投资回报率 (Cost vs ROI):重新嵌入数百万个数据块 (chunks) 的成本很高。除非准确率的提升足以抵消迁移成本,否则公司通常会沿用旧模型。
- 务必存储原始文本块。如果你以后升级了模型,可以使用旧文本来创建新的向量。
第二阶段是实现智能化的核心环节。
来源:https://dev.to/surajrkhonde/phase-2-embeddings-semantic-search-3lco
可选学习社区:https://t.me/GyaanSetuAi
