1
langsfang 5h 31m ago
稍微偏题一下,我是觉得用 embedding 来做检索像是走了岔路,这都是在 LLM 不成熟的时候发展起来的
很早之前,我就发现 LLM 能做 in-context learning ,其实本质上就是在 context 内做检索,那 attention 能否直接来做检索呢? 所以我试了一下,用 qwen-3.5 的 0.8B/2B/4B/9B 模型,直接把文本做 KV, 来了 query 后用 attention 来做检索,效果很好,LoCoMo 和 LongMemEval 的测试都是 SOTA ,在代码搜索上,也在一个 semble benchmark 上 SOTA 了,对 10M context 上搜索效果也很好( qwen 3.5 原生 256K context ),并且用 swe-qa benchmark 做了测试,有了搜索后,在 CC 上 token 使用量下降 50%左右 当然代价就是空间和性能,其实主要是 index,也就是生成 KV 的时间较长,search 其实还好,不需要 decode,只需要在原始 KV 上 prefill 一下 query 就行,有 GPU 加速很快 |
2
lynn1su OP @langsfang #1 我觉得你说的不对
1.embedding 来做检索不是岔路,是便宜的替代方案 2.KV 一个 token 存几十层×几千维,10M 上下文就是 TB 级显存; embedding 一个向量才几 KB ,差几十上百倍,公司用大规模知识库规模化只能用 embedding 3.我觉得你 10m 只是能搜到,不是能理解并思考,你多段 KV 拼起来缺跨段注意力,位置编码外推 40 倍 所以我觉得吧,还是嵌入模型好使 |
3
langsfang 4h 11m ago
1. 更便宜的是 grep/rg ,当前没有一个 coding agent 用 embedding 就是这个原因
2. 我的方案 2KB per token ,是比 embedding 大,但我觉得 index size 不是问题,recall/precision 才是 3. 没有用 rope 外推的方案实现 10M 的 search |