第一天:为圣诞老人收集节日智慧 📖
随着圣诞节的临近,北极一片忙碌。玩具正在组装,驯鹿正在为这个重要的夜晚进行训练,而精灵们则在精细调试圣诞老人的雪橇。但在节日的热闹中,圣诞老人面临着一个紧迫的个人挑战。
在过去的一年里,圣诞老人一直在学习关于 LLM、RAG 和 AI Agent 的知识,并且非常喜欢。这些方法在他的工作上带来了革命性的变化,他希望今年能更进一步。
“我需要在圣诞节前写完这些博客文章,并理解如何转换查询以获得更好的检索效果,以及元数据过滤和元数据增强之间的区别,”圣诞老人一边在书房里踱步一边喃喃道。“但圣诞节快到了,在我被送礼物和烟囱调度淹没之前,没有时间了!” 🎅🎁
“圣诞老人,我听到您了,”精灵 Bilge 走进房间说。“您想在圣诞节前掌握高级 RAG 方法,但没有时间阅读所有内容。如果我们构建一个能够获取您想要的文章并直接回答您问题的系统,会怎么样?”
圣诞老人的眼睛亮了起来。“我怎么没想到呢?你说得对,Bilge。我猜我是老了。我们只需要一个带有 **LinkContentFetcher** 和几个额外组件的 Haystack 管道,我们就准备好了!” 💡
精灵 Bilge 微笑着说:“有了 Haystack 的一点魔法,一切皆有可能。”
在这个挑战中,您必须帮助精灵 Bilge 构建一个 Haystack 管道,该管道可以从给定的 URL 获取内容,处理数据的相关性,并启用一个无缝的问答系统来回答圣诞老人的查询。
以下是您在此挑战中将使用的初始组件
-
使用
LinkContentFetcher在您的管道中使用几个 URL 的内容 -
使用
HTMLToDocument将 HTML 文件转换为文档。 -
使用
PromptBuilder来创建提示 -
使用
OpenAIGenerator来生成响应
您的任务是找出如何连接这些组件,并考虑添加额外的组件来帮助您识别给定内容中 10 个最相关的块。
🎯 要求
- 如果您想使用
OpenAIGenerator,则需要一个 OpenAI API 密钥,但您也可以选择 Haystack Generators 支持的任何其他 LLM。
💡 一些提示
- 查看 Haystack Pipelines 文档 了解更多关于管道连接的信息。
- 如果您连接了给定的组件,初始管道将按原样工作,但您可以添加两个额外的组件来增强此管道。
- 此挑战不需要检索器
- 一个额外的组件是将文档分成每份大约 10 句话的小块。
- 作为另一个组件,请考虑在将上下文注入提示之前,可以使用哪些方法或组件来过滤掉不相关的块。
⭐ 奖励任务: 使用 OpenAIChatGenerator 或其他 ChatGenerator 组件而不是标准的 Generator 组件,并提供系统消息来指导 LLM。
system_message = """You are a technical expert. Use only the provided content and source URLs to answer questions. Don't use your own knowledge. Do not add any extra information or search the web. Keep your answers clear, accurate, and to the point, including the document links you used. If the documents don’t have the answer, say "no answer" """
💜 这是 入门 Colab。不要忘记使用上面的“提交”按钮提交您的解决方案笔记本,以赢得惊喜奖品!
