编者按:这篇文章是与 Tavrn 团队合作撰写的。他们使用 LangChain(以及一些有趣的检索策略)和 LangSmith(用于微调链和提示),构建了一个全新的个人助理应用程序 Noah,该应用具有高度个性化和高度上下文感知能力。
对于许多职场人士来说,ChatGPT 已经是一个不可或缺的工具。其令人印象深刻的通用性能使其在各种工作流程中都非常通用,从创意头脑风暴到编码。为了从 ChatGPT 获得最佳输出,用户熟悉提示的过程 - 向聊天机器人提供尽可能多的上下文和指令,以便输出令人满意。
这种费力的用户体验的观点通常涉及多次复制/粘贴多个文档的部分内容,这些文档包含与提示相关的信息。鉴于 ChatGPT 对用户或其工作没有任何上下文,输出质量高度依赖于用户提供的信息。例如,如果用户希望 ChatGPT 最好地帮助确定首先构建哪些产品功能,他将不得不
1. 查找并打开所有可能对 ChatGPT 有用的上下文文档(例如,产品会议记录、用户反馈报告、有关产品本身的信息)
2. 阅读每份文档,复制相关部分并粘贴到 ChatGPT
3. 希望所有内容都符合 ChatGPT 的字符限制,并且他没有忘记包含任何重要的上下文
这种低效、手动地始终向 ChatGPT 提供最佳上下文的过程,阻止用户将其用于更复杂的用例,例如上面说明的用例。我们构建 Noah 是为了解决上下文获取问题,并允许用户体验始终有效检索最佳可能上下文以回答用户查询的 AI 助手。
简洁性和用户友好性是 Noah 的核心。我们负责处理后台的所有繁重工作。只需点击几下,用户就可以从自己的 Google Drive 和 Notion 同步数百个文件,并开始获得 Noah 的帮助。
在 LangChain 的支持下,Noah 在工作场所解锁了更强大、更相关的 LLM 用法:一个专门为用户及其工作提供帮助的个人 AI 助手。在上面的产品优先级排序示例中,Noah 将负责所有三个步骤(查找相关文档、选择每个文档中最相关的部分、将每个部分添加到 LLM 提示),因此用户对聊天的唯一输入可以是“我应该优先考虑哪些产品功能?”
要开始使用 Noah,用户需要选择要从中同步文件的工具。

选择工具后,用户可以选择特定文件,也可以快速选择他们最近 200 个来自 Google Drive 或 Notion 的文件。
用户选择文件后,Noah 除了使用最先进的嵌入模型外,还使用优化的、上下文感知的文档加载器处理文档。我们尝试了多种形式的语义分块,但 LangChain 的 CharacterTextSplitter,每个块大约 2,400 个字符,在所有类型的文档(电子表格、文档、PDF、幻灯片)中都优于所有其他方法。
然后,一旦用户提出问题,Noah 就会利用余弦相似度向量搜索从多个来源获取最相关的内容,并将它们传递给多链 LLM 调用,从而获得最佳答案。我们还尝试了其他形式的检索,但余弦相似度明显优于其他方法。
当微调最终用户答案使用哪些链和提示时,Langsmith 对我们来说非常有用。在学习过程中,ConversationBufferWindowMemory 的最佳内存 “k” 参数为 1,否则答案会因过多的历史上下文而变得不可靠。此外,在检索到块后,我们将其传递到中间的、由 GPT-4 驱动的链中,以过滤掉任何冲突信息,优先考虑较新的来源。
最后,Noah 提供答案,并引用适当的来源。
要开始使用 Noah 并提高您的工作效率,请访问 https://tavrn.art/noah。