目前正在调研阿里云的 DashVector 向量检索
个人背景:没有很深的大模型理论基础,只会一般水平的使用
调研内容: 我将一大批问题向量化 TextEmbedding.Models.text_embedding_v2 (1536)维后存入向量数据库 其中有一个问题 a. 查询商品 ACD1231321 的价格
如果我现在有一个新的问题 b.查询 TCTLSS 的价格
我期望它通过向量检索去关联到 a ,那么实际上他的匹配度并不是很高,那我的想法是将 a 问题抽象成查询商品的价格。
就是这个意图识别的操作,请问 V 友们有什么比较好的建议呢?
1
Hamao OP 就相当于真实的问题中是包含一个变量的
查询商品{item_name}的价格,这个让我很苦恼,不知道如何去规避掉他的影响,使得真实的问题 与 向量数据库中的范例更加的贴近 |
2
0x3933030 168 天前 2
文本向量化后的出来的向量,a 和 b
如果 a 和 b 是相近的话,那么根据向量化算法,a 和 b 的文本也是相似的。 反过来说,你想要通过 b 的原始文本和 a 的原始文本向量相近,那么只能够调整你的向量化算法的权重。 |
3
maolon 168 天前 via Android 2
这场景不是更适合 sqlretriever 么,你的问题转化 sql 然后查询数据库。vector db 更适合搞知识库(比如问答 qa)查询。
当然你硬要这么搞也行,调整存到数据库的 a 的字段,尽量把信息搞的精简 比如类似 json 的那种格式 “商品名: acd, 价格: xxx, 生产公司: xxx,” 然后多余信息一点都不要给。 我之前做过一个查询工作的也是上面类似的思路 |
4
0x3933030 168 天前 1
又或者你的 a 和 b 的原始文本差距很小,可能只有几个字的话,试试 simhash
|
5
dayeye2006199 168 天前 via Android
这个就是分类之后的实体抽取。前大模型时代就是各自标注数据,搞两个模型。
大模型时代就是 prompt 工程,你仔细把规则写清楚,给把你放向量数据库里面的例子,直接 chatgpt 即可。 |
6
Wo2uEAQ7HoEu7rls 168 天前
问题在于你的 embeding 模型不具备提取问题类型的能力,可以再次进行微调,训练集中让问题 a 与问题 b 得到的向量尽可能近,使模型在对问题编码的过程中更加注重问题类型的提取,而非商品类别
|
7
Wo2uEAQ7HoEu7rls 168 天前
可以使用对比学习搞一下,样本 a 与样本 b 视作正样本,负样本可以生成一些,比如:“查询商品 ACD1231321 的价格”、“查询商品 ACD1231321 的颜色”。这两个问题得到的向量让它们远离
|
8
Hamao OP @dayeye2006199 哥你的想法和我昨晚思考的一模一样,从向量数据库里捞出最相似的五条,直接写一个 prompt 丢给 qwen (千问 max )让他帮忙分析+补全问题。
|
9
Hamao OP 感谢大家啦,每条都感谢了
其中 @Hellow0r1d ,您的这个其实是我想多了解一点的,但是如同个人背景所述:只会使用。平时时间比较有限,还要专注于其他的学习,导致我没时间去学习这一块的知识 我这边的想法与 @dayeye2006199 所述相似,因为我觉得这样能更好的减少投入(指 money )😂,专业的事情交给专业的人,我就可以专注于其他的开发了 |