RAG实践总结:将互联网数据融入LLMs的工具推荐
发布日期:2024-05-31 12:44:05
浏览次数: 2104
来源:Bear实验室
预训练给LLMs带来了强大的推理能力,同时也带来了知识冻结的局限,让LLMs具备获取动态、实时的海量互联网数据,给了大家巨大的想象空间。Perplexity AI的爆火就说明了这个问题,互联网数据和LLMs的双向奔赴擦出了火花。构建RAG(Retrieval-Augmented Generation)流程,我们经常需要从互联网获取数据,把数据加载到系统内存中,为后续的元数据标注、分块、向量化、索引等预检索步骤做准备。搜索和抓取解析网页内容成了一个热门的话题,本文分享几个专门针对LLM友好设计的工具和框架。https://github.com/jina-ai/readerJina ai 除了 Reader,还有Finetuner、Embeddings、Reranker。这家公司总部在德国柏林,在北京和深圳有办公室,中文名好像是叫极纳人工智能。您可以在生产中随意使用 Reader API。它免费、稳定且可扩展。我们正在积极维护它,将其作为 Jina AI 的核心产品之一。- 阅读:它将任何 URL 转换为LLM 友好的输入
https://r.jina.ai/https://your.url
。免费为您的代理和 RAG 系统获得改进的输出。 - 搜索:它使用 搜索网络上给定的查询
https://s.jina.ai/your+query
。这使您的 LLM 能够从网络上获取最新的世界知识。
最开始我还在用GeneralNewsExtractor(https://github.com/GeneralNewsExtractor/GeneralNewsExtractor)自己开发,抽取媒体文章的正文和标题,效果还不错。自从发现Jina Reader,我就直接转用这个,确实很方便。https://github.com/mendableai/firecrawl AGPL-3.0 licenseFirecrawl是一种 API 服务,获取 URL、对其进行抓取并将其转换为干净的 markdown 或结构化数据。我们会抓取所有可访问的子页面并为您提供每个子页面的干净数据,无需站点地图。- 抓取 URL 并获取其内容,也可以异步的方式提交任务,等待结果。
- 用于搜索网页,获取最相关的结果,抓取每个页面并返回 markdown。
- 客户端有python和nodejs的SDK,服务端是nodejs,可以自己部署。官网提示:此存储库处于早期开发阶段。尚未完全准备好进行完全自托管部署,但您已经可以在本地运行它。
https://github.com/Skyvern-AI/skyvern AGPL-3.0 licenseSkyvern使用 LLM 和计算机视觉来自动化基于浏览器的工作流程。它提供了一个简单的 API 端点来完全自动化手动工作流程,取代脆弱或不可靠的自动化解决方案。通过任务驱动自主Agent设计,并赋予 Skyvern 使用Playwright等浏览器自动化库与网站交互的能力。这个想法真不错,但这个会不会产生大量的Token消耗呢?https://github.com/VinciGit00/Scrapegraph-ai/ScrapeGraphAI 是一个网络抓取Python 库,它使用 LLM 和直接图逻辑为网站和本地文档(XML、HTML、JSON 等)创建抓取管道。主要的抓取管道可用于从网站(或本地文件)提取信息:SmartScraperGraph
:只需要用户提示和输入源的单页抓取工具;SearchGraph
:从搜索引擎的前 n 个搜索结果中提取信息的多页抓取工具;SpeechGraph
:从网站提取信息并生成音频文件的单页抓取工具。SmartScraperMultiGraph
:多个页面抓取工具给出一个提示。
ScrapeGraphAI基于LangChain实现的一套AI Agent自动化爬虫框架。https://github.com/spider-rs/spiderSpider 是一款领先的网络爬虫工具,旨在实现速度和成本效益,支持各种数据格式,包括 LLM-ready markdown。号称全世界最快,相当大的口气。- Spider 使用 Rust 编写,以全并发运行,实现在几秒钟内抓取数十个页面。
- 获取干净且格式化的 markdown、HTML 或文本内容,以进行微调或训练 AI 模型。
- 智能模式,当需要时,Spider 会动态切换到 Headless Chrome。
- 使用最新的 AI 模型进行自定义浏览器脚本和数据提取。
https://github.com/apify/crawleeCrawlee — 用于 Node.js 的 Web 抓取和浏览器自动化库,用于构建可靠的爬虫。使用 JavaScript 和 TypeScript。提取 AI、LLM、RAG 或 GPT 的数据。从网站下载 HTML、PDF、JPG、PNG 和其他文件。适用于 Puppeteer、Playwright、Cheerio、JsDom 和原始 HTTP。可以使用有头模式和无头模式,具有代理功能。这是Apify开源的一个项目,Apify是Y Combinator孵化的一家专门做爬虫的公司。他们提供了一个网页抓取和自动化任务的云平台,旨在为开发者提供高性能、易用的解决方案。用户可以自定爬虫程序(Actor),然后放到平台上运行,其他的都由Apify解决,这个想法相当不错。https://python.langchain.com/v0.1/docs/integrations/document_loaders/sitemap/LangChain出的一个工具, 扩展WebBaseLoader
,SitemapLoader
从给定的 URL 加载站点地图,然后抓取并加载站点地图中的所有页面,将每个页面作为文档返回。Github上就有一个基于这个逻辑实现的项目 https://github.com/langchain-ai/chat-langchain ,从文档站点和 Github 代码库中提取 html,转化为可以对话的聊天机器人。Azure Bing 搜索服务接口是微软提供的一种API,允许开发者在其应用程序中集成Bing的搜索功能。支持Web、News、Image、Trends各种分类榜单等,返回JSON格式的数据。Bing 搜索服务接口提供了强大的搜索能力,支持多种类型的内容检索,并且通过灵活的API设计和丰富的功能,使得开发者可以轻松地将这些功能集成到自己的应用程序中。可以在Azure云上申请,收费也不便宜,量大的话有点难受。专为LLMs驱动的AI Agent 构建的搜索引擎,提升 AI 的能力,快速提供实时、准确且真实的结果。搜索 API 有助于将 LLM 和 AI 应用程序连接到可信的实时知识,从而减少幻觉和整体偏见。简而言之,API 可帮助您的 AI 做出更好的决策。不像Bing Search只返回内容摘要,Tavily返回主要内容,可以定制摘要、标题等内容。之前我使用Tavily做了一个自动写主题报告的Agent,返回结果很不错,时效和内容都满足要求。现在申请有1000次免费调用次数。https://github.com/searxng/searxng开源 AGPL-3.0 许可证,只能部署作为企业内部或者个人使用。SearXNG 是一款免费的互联网元搜索引擎,它汇总了来自各种搜索服务和数据库的结果。它不会跟踪或分析用户。Docker部署比较方便,有UI操作界面,也可以使用API对接。之前尝试过,效果不太能满足我的需求,搜索的精准度一般,时效性也一般,但开源。https://start.duckduckgo.com/DuckDuckGo是一个注重隐私保护的互联网搜索引擎,成立于2008年9月25日,主要特点是不追踪用户的搜索历史和个人信息。可以免费使用,LangChain有对应的Tool封装DuckDuckGoSearchRun,DuckDuckGoSearchResults,可以很轻松对接到自己的LLM应用。但搜索的逻辑和质量还需要进一步研究。比如我搜索“王健林的儿子是谁?”,返回结果:万达产投公司"其实就是一次"赌局"。王健林赌的,就是王思聪这个遗腹子最终能否真正撑起万达的家业江山。有趣的是,这对父子二人在出道时的"赌注"金额,就已经高达10个亿了!这笔疯狂现金流,虽不及王健林那些地产大盘的"门面费"。当年,王思聪在去英国留学前,父亲王健林在百忙之中特意抽空去机场送他,并对他叮嘱了4个字,振兴中华,这4个字让王思聪终身难忘。看看人家王健林,他老王之所以能成为中国首富,不就是因为他拥有远超我们普通人的气魄和胸怀吗?可你老钟呢?王健林的父亲:军人出身,活了101岁,百岁生日时王健林为他祝寿. 相信大家对"一个亿的小目标"发起人王健林都不陌生,他将万达做成了同行业的领军企业。.
比较知名的搜索API聚合网站,好几年前就有用过,免费的有每月100次的搜索。SerapApi通过帮助用户从搜索引擎结果中提取有价值的信息,并将其应用于各种场景,包括SEO优化、背景检查、AI模型训练、新闻监测和语音助手开发。通过其API,用户可以轻松地集成和利用这些数据,提高工作效率和决策质量。ArXiv(全名为“arXiv.org ”)是一个全球重要的科学学术论文预印本平台,成立于1991年,由美国康奈尔大学创建。它以免费、开放的方式提供学术研究论文,涵盖了物理学、数学、计算机科学等多个学科领域。我最近看的AI相关的论文,基本上都是在ArXiv上下载的,相当方便。ArXiv有对应的API接口,可以搜索、下载论文,建议使用LangChain的封装集成到LLM项目。可以自己打造一个AI Agent,做到根据给定的关键词,搜索论文,加载到RAG流程中,总结再输出报告。https://www.wikipedia.org/维基百科Wikipedia是一个多语言的免费在线百科全书,由被称为维基百科人的志愿者社区通过开放协作并使用基于维基的编辑系统 MediaWiki 编写和维护,Wikipedia
是历史上规模最大、阅读量最多的参考书。使用API搜索内容,在作为LLM对话的上下文,回答用户提问。https://github.com/venuv/langchain_yt_tools自定义 LangChain 工具来搜索/提取/转录 Youtube 视频,由两个自定义 LangChain 工具CustomYTSearchTool和CustomYTTranscribeTool组成- CustomYTSearchTool 搜索包含人名的YouTube 视频并返回排名前num_results 的URL。
- CustomYTTranscribeTool 转录视频并将文本记录输出到 transcripts.json。
- 第一次使用时,您需要使用 Youtube 凭证进行身份验证。
除了使用别人封装好的搜索工具外,也有可能自己有获取数据的渠道。可以使用LangChain的自定义工具,把获取数据的渠道封装成LLM友好的搜索工具,从而构建自己的AI Agent,大部分的LLM都是支持工具调用,具体的方式可以参考 https://python.langchain.com/v0.1/docs/modules/tools/custom_tools 。我尝试过把AkShare的金融数据封装成工具,构建量化的Agent,可以做AI的自动化回测和股票分析。当然这不代表就比人做的好,但确实可以节省时间,发现一些有意思值得深入研究的问题。
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业