使用Firecrawl和Trieve为任何网站构建搜索和RAG

💡 原文英文,约2400词,阅读约需9分钟。
📝

内容提要

本指南介绍了如何使用Firecrawl和Trieve在Python和JS中构建SigNoz文档的搜索和RAG。使用Firecrawl的REST API将URL上的每个页面转换为向量搜索和RAG-ready markdown。然后,Trieve的API可以接收markdown文档的块,将它们嵌入到搜索索引中,并最终调用执行AI搜索和RAG。所有使用的代码(包括node.js和Python)也在GitHub上提供。

🔎

延伸解读

分块策略的权衡与优化

文章采用基于标题层级的分块方法,优先按顶级锚点链接和h3、h4标题分割,并设置500词和h4深度作为限制。这种方法旨在保持语义连贯,但仍有25个块超过500词,说明固定阈值可能无法覆盖所有情况。读者可考虑根据实际内容调整词数限制或尝试更细粒度的分割,以平衡检索精度与上下文完整性。

元数据与标签的检索价值

为Trieve准备的块包含tracking_id、group_tracking_ids、tag_set等字段,这些元数据不仅用于链接同一页面的块,还能通过URL片段生成标签(如['install', 'kubernetes']),支持过滤和分组搜索。合理利用这些字段可以提升搜索的精确性和灵活性,例如在特定文档范围内进行检索。

搜索类型的选择与效果差异

Trieve提供语义、全文(SPLADE)、混合等多种搜索类型。语义搜索基于向量相似度,适合概念匹配;全文搜索侧重关键词;混合搜索结合两者并重新排序。文章示例显示,不同搜索类型对同一查询返回的结果侧重点不同。读者应根据查询意图和数据特性选择合适类型,或通过Playground测试比较效果。

HyDE在RAG中的应用

HyDE是一种检索增强方法,通过LLM生成假设文档来替代原始查询进行语义搜索,旨在提高零样本检索精度。在Trieve的RAG设置中,HyDE提示是可选项,启用后可能改善对复杂查询的响应质量。但需注意,其效果取决于LLM生成内容的相关性,并非所有场景都适用。

❓

Q&A

如何使用Firecrawl将网页转换为markdown格式?

使用Firecrawl的REST API,可以将指定URL上的每个页面转换为向量搜索和RAG准备好的markdown格式。

Trieve的API如何处理markdown文档?

Trieve的API接收markdown文档的块,将它们嵌入到搜索索引中,并执行AI搜索和RAG。

在使用Firecrawl和Trieve之前需要做什么准备?

需要注册Firecrawl和Trieve以获取免费的API密钥,并设置.env文件以存储这些密钥。

如何对markdown内容进行初步清理?

初步清理包括去除多余内容和调整链接的呈现方式,可以使用预先定义的清理函数。

如何将处理后的块存储到Trieve中?

使用Trieve的api/chunk路由将处理后的块以JSON格式存储到Trieve中。

Trieve的Playgrounds有什么功能?

Trieve的Playgrounds允许用户测试搜索和RAG的质量,查看数据和初步清理的效果。

🏷️

标签

➡️

继续阅读