兄弟们,最近搞了几个RAG项目,发现社区里一堆人还在无脑上向量数据库,今天必须泼盆冷水。RAG不是简单的“文档切碎+向量检索+塞给大模型”,这玩意儿坑多着呢。
先说检索质量。很多人拿PDF直接拆,结果表格、代码块全碎了,检索出来一段驴唇不对马嘴。建议你们用LangChain的文档分割器,配合语义分块(比如按Markdown标题切),召回率能提20%。部署层面,如果你用FAISS或Chroma,记得做TF-IDF+向量混合检索,纯向量对短查询极不友好。
再说模型调用。别傻傻地每次检索完就把全部上下文喂给LLM。token不花钱吗?我习惯用Reranker(比如Cohere rerank或BGE-reranker)对候选文档重排序,只取top-3的chunk。实测Gemma-7B和Llama-3-8B在这种简化输入下,推理延迟从3秒降到0.8秒,准确率反而更高。
最后,别忽略embedding模型的选择。bge-m3或者gte-large比text-embedding-ada-002更适合中文场景。如果你在跑本地部署,记得量化模型,否则内存直接爆炸。
抛个问题:你们在RAG中处理表格数据时(比如Excel或HTML表格),有什么好用的方案?是转Markdown还是直接喂HTML标签? |