从“废柴”到“神器”的 RAG 聊天机器人改进心得
2025年2月10日
许多人都在构建聊天机器人,乘着当前人工智能的浪潮。然而,由于我们身处一个炒作凌驾于一切之上的行业,如果你不使用人工智能,你就会被抛在后面,面临被遗忘或至少被直接竞争对手超越的风险,他们正在利用这一技术。
如果你不去做,其他人会去做……那又如何呢?这意味着这种思维方式导致了许多匆忙的实施,目标半吊子,效果看起来和感觉都很糟糕。虽然这种现象的认识需要很长时间才能跟上炒作的驱动因素,但这肯定会到来。
那么,在这个领域构建有用的东西需要什么呢?
数据为王!
毫不奇怪,你拥有的数据越好,你的任何实施效果就越好。几十年来流传的“垃圾进,垃圾出”(GIGO)这一格言在今天显得尤为真实。如果你输入的是垃圾,得到的也只能是垃圾,别无他法。这些模型并不是灵丹妙药,事实上,这些模型本身是基于被称为“高质量数据集”的内容进行训练的,这意味着有团队的工程师和数据科学家正在构建超级复杂的管道,以尽可能将数据整理到合适的状态,以便通过这些模型的训练循环,而这些循环通常需要几周或几个月的时间。
如今,许多公司的重大投资(最大的投资?)是构建使用私有数据的“公司级大语言模型(company-LLMs)”,这些数据是独特于你的公司、业务领域、运营和客户的,以利用一个高度定制和专注的模型,这对于“在公司X工作的约翰想了解项目Y”要比对于仅仅想知道如何制作完美的奶酪通心粉的珍妮丝要有用得多。
然而,即使在旅程的最开始,许多问题也开始浮现:我们是使用内部所有不同的数据源格式,还是尝试对某种特定格式达成一致?
我们只想要文本,还是也需要图像?
这一切都取决于用例、数据的敏感性以及您想要组装的管道的复杂性。然而,对于许多用例而言,绝大多数被摄取的数据将是文本,采用单一标准格式是非常有利的。将一切都转为Markdown。就这样。
当我们为数据摄取采用单一格式时,事情变得极为简单:准备文档摄取管道变得容易,因为只需处理一种格式。我们可以使用像Docling这样的工具或类似工具,将N种不同格式转换为Markdown,我们可以提取元数据、总结内容,并在文档内部用标题、副标题和列表来组织数据。这是一个巨大的胜利,如果这对您的特定用例是可行的,您应该这样做。
解析和分块不在关键路径上
当我第一次开始关注这个领域时,有很多未知的事情,甚至到今天,距离我开始已经一年多一点,形势变化如此之快,以至于很难跟上所有的进展,尽管,就像“经典软件工程”一样,如果我们可以这样称呼它,专注于基础始终是最佳选择。
在这种情况下,基础都源于信息检索算法和自然语言处理,真正的“新颖性”是大型语言模型(LLMs),它们只在整个过程中产生影响。 最重要的建议可以总结为两点:
- 你需要确保文档的片段能够发送到嵌入模型(基本上,它们需要适合该模型的上下文窗口);
- 你可能不需要复杂的解析和分块算法,我们将在最后对此进行总结;
不要过于思考这一部分,只需确保你使用的任何 嵌入模型 与你传递给它的片段大小匹配,或者至少具有预定义的截断策略,以保持你的管道灵活。
不要重复造轮子
将最佳工程实践与使用提供API的供应商结合起来,以便与基础模型和嵌入模型进行交互,是最佳选择。
查看你选择的编程语言,看看是否有专门用于在这个勇敢新世界中与AI合作的框架,并加以使用。
更好的是, 改进它们 并帮助其他人 导航它们,让每个人都有机会做正确的事情!
只需专注于你的秘密武器,即你的数据,然后通过遵循最佳实践,让事物自然结合,利用框架,并将真正的API工作外包给能够保护你的应用和用户免受所有复杂性的供应商。
这样,你将能够在非常坚实的基础上构建,帮助你根据需要改进或扩展事物。
最后,如果你专注于阅读该领域顶尖公司的文献,同时寻找如何将他们的一些建议应用和/或调整到自己的工作中,你将能够在扎根于基础知识的同时取得巨大的进展。我个人推荐阅读Anthropic发布的任何内容!
实用建议
为了总结一下,这里有一些实用的建议可以尝试:
-
将你的文档标准化为统一的格式(我喜欢使用Markdown);
-
尽可能使用经过验证的技术(Springboot、Postgres、托管模型提供商,如AWS Bedrock);
-
你不需要专用的向量数据库,你只需要Postgres。
-
你需要重新排序,即使你认为不需要。使用Cohere rerank 3.5。
-
上下文可能比你想象的要长。发送20个上下文块不会稀释更新的LLM,实际上会积极改善它们的输出。
-
索引可能是关键,也可能不是,但它们在嵌入与传统数据库字段的工作方式上有所不同,因此,先了解它们。
总体而言,如果你扎根于基础知识,在关键时刻做出明智的选择以保持简单,并使用最先进的LLM,那么你所构建的质量将仅受限于数据的质量,而对于许多公司来说,这正是你能够脱颖而出、超越竞争对手的地方!
最重要的是,享受其中的乐趣!!这是一个令人兴奋的领域,你可以在玩弄最新的炫酷工具时学到很多工程基础知识!这样的机会并不多,所以,尽情享受,玩得开心,构建酷炫的东西吧!