V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dongcxcx
V2EX  ›  问与答

RAG 的准确率是否可以满足我这种场景?

  •  
  •   dongcxcx · 2 天前 · 743 次点击

    各位巨佬, 有一个场景. 我需要实现一个比价的功能,但是供应商的接口不太好适配.我想是否可以借助 RAG 来实现.

    我可以把 sku 的信息及其价格作为文本的行存储在文件中.利用 rag 去查.(整体的数据量并不多, 应该在 10w 以内)

    比如:

    商品 A 属性 1 属性 2 属性 3 属性 4 属性 5 数量 100 价格 100 元

    商品 A 属性 1 属性 2 属性 3 属性 4 属性 5 数量 200 价格 200 元

    商品 A 属性 1 属性 2 属性 3 属性 4 属性 51 数量 100 价格 105 元

    我参照 langchain4j 官方的例子, 用的自带的 BgeSmallEnV15QuantizedEmbeddingModel.测试准确率还挺高的. 用 openai 的 text-embedding-3-small 反而准确率非常低,基本是乱匹配. 同时,我发现写在文本里准确率高,写在 excel 里再加载出来又识别不了(是我的代码实现问题?).

    我想知道 rag 能否实现我的这种场景,我怕走到最后发现行不通.或者有其他什么更好的思路. 谢谢!

    10 条回复    2025-03-20 16:17:22 +08:00
    yangyaofei
        1
    yangyaofei  
       2 天前   ❤️ 1
    不如用大模型把上面的属性都抽取出来, 然后存下来, 用的时候直接检索(可以匹配所有语义相似的属性字段).

    直接用 embedding 效果不会太好, embedding 也是做属性字段的 embedding(上面说的语义相似的属性字段一起匹配的逻辑)
    itskingname
        2
    itskingname  
       2 天前   ❤️ 1
    你这种需求,直接 chat2db 就好了。有现成的开源库,你也可以用 tool calling 自己写,MCP 官方案例里面也有读取数据库的案例。方法太多了,但就是不推荐 RAG 。
    sunshower
        3
    sunshower  
       2 天前 via Android   ❤️ 1
    尽量用模型容易识别的格式存数据,office 现在似乎挺差的。另外有些向量模型对中文支持差,要看模型说明和网上评测
    dongcxcx
        4
    dongcxcx  
    OP
       2 天前
    @itskingname 我简单看了下.是不是可以理解为, ai 根据用户的自然语言,生成 sql 语句去查询.
    我需要的改动就是:
    1. 把文本里的数据转成结构化的数据,存在数据库里
    此时,ai 根据用户的自然语言提问,生成查询 sql.
    那问题是, ai 生成的 sql 的准确性如何呢, ai 怎么知道哪个属性值对哪个字段的查询? 这么做是不是比直接向量匹配更好?
    以及.如果我都能把用户的需求结构化出来, 数据也结构化出来, 那是否这个 chat2db 完全没有必要. 直接 Function call 也能做了?
    cheng6563
        5
    cheng6563  
       2 天前
    @dongcxcx 搞个 Agent ,弄个工具直接把表信息丢给他。
    itskingname
        6
    itskingname  
       2 天前
    @dongcxcx 你需要把数据库的 schema 发送给大模型。你在生成 schema 的时候,可以加上一些注释,这样大模型就知道这个字段是干什么的了。现在大模型生成 SQL 的效果已经很不错了。我使用 claude 3.5 sonnect 。三张表 Join+with 语句+rank + offset 都没有任何问题,生成出来直接就是我想要的。
    wq2016
        7
    wq2016  
       2 天前
    我们可以,Excel 的导入,多列数据。
    itskingname
        8
    itskingname  
       2 天前
    @dongcxcx 用户提问是自然语言。你把用户的问题、数据库的 schema 、数据库类型都发给大模型,然后加上一个 tool 叫做 query_db ,参数就是 sql 。这样大模型第一轮就会自动生成工具调用的 query ,参数 sql 就是他生成的 sql 语句。你直接用这个语句查询数据库就有结果了。接下来。你既可以让大模型拿到结果进一步总结,也可以直接把结果返回给用户。
    111111111111
        9
    111111111111  
       2 天前
    精确的结构化数据,让 agent 生成 sql 查库就好了,不需要 rag 的
    dongcxcx
        10
    dongcxcx  
    OP
       2 天前
    @itskingname 明白了. 你这个就是 Function call+结合 prompt 吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   940 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:36 · PVG 04:36 · LAX 13:36 · JFK 16:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.