合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
作者 | 崔皓
审校 | 重楼
在AIGC(人工智能与通用计算)应用中,大型语言模型(LLM)占据着举足轻重的地位。这些模型,如GPT和BERT系列,通过处理和分析庞大的数据集,已经极大地推动了自然语言理解和生成的边界。它们在多种应用中表现出色,如文本生成、语言翻译、情感分析等,对提高工作效率和展开创新的应用场景起着关键作用。
然而,LLM在处理实时数据方面存在一定的局限性。这些模型主要基于大量历史数据进行训练,因此,在理解和分析实时或最新信息时可能不够灵敏。在应对新兴话题或最新发展趋势时,LLM可能无法提供最准确的信息,因为这些内容可能尚未包含在其训练数据中。此外,LLM在快速处理和反应实时变化方面也面临挑战,尤其是在需要分析和反映最新市场动态、政策变化或社会事件时。
既然我们已经意识到了大型语言模型(LLM)在处理实时数据方面的局限性,那么下一步就是探索如何通过Web Research技术突破这一限制。下面的内容将专注于如何通过网络爬虫技术结合LLM,实现对实时网络资源的有效获取和分析。
Web Research 结合 LLM 的整体思路是复杂的过程,旨在利用大型语言模型的自然语言处理能力,实现对互联网数据的高效处理和分析。如下图所示,我们将整个过程进行拆解:
1. 实时网络请求:首先,对目标网站发起实时请求,以获取最新的数据和内容。
2. 获取HTML页面:使用网站的URLs来访问和加载HTML页面,此时,网页的数据将被加载到内存中。
3. 内容转换:随后,将加载的HTML页面转换为文本信息,为后续的处理步骤做准备。这通常涉及去除HTML标记和格式化内容,以提取纯文本数据。
4. 数据存储和分类:转换后的文本数据可以存储在向量库中,以便于进行高效的检索和分析。同时,可以利用LLM对内容进行分类和组织,以便快速访问相关信息。
5.生成摘要:最后,利用LLM的功能调用来生成文本数据的摘要。这不仅包括提取关键信息,还可能涉及对数据进行综合和解释,以便用户能够快速理解内容的核心要点。
通过这样的流程,我们能够结合LLM的强大文本处理功能和网络爬虫技术的实时数据访问能力,有效地处理和分析大量的在线信息。这种方法不仅提高了信息处理的速度和准确性,而且通过摘要和分类,使得用户能够更容易地获取和理解需要的数据。
为了验证Web爬虫和大型语言模型结合的研究思路是否切实可行,可以以知名新闻网站Wall Street Journal(华尔街日报)为例进行实证分析。假设从该网站的首页,获取实时的新闻信息,并且将这些信息进行抽取,最终保存为包括“标题”和“摘要”的结构化信息, 以便后续查找和分析。从过程描述中发现,将面临三个主要的技术挑战:加载、转换以及通过LLM进行内容抽取。
1.加载HTML:我们可以访问 https://www.wsj.com,使用网络爬虫工具获取网站的HTML内容。这一步涉及发送HTTP请求并接收返回的网页代码。
2. 转换为文本:分析该网站的HTML结构表明,文章标题和摘要信息通常包含在`<span>`标签中。如下图所示,文章的标题是在`<span>`标签中。
如下图所示,我们观察到,文章的摘要也是保存在<span>标签中。
因此需要利用HTML解析库,如BeautifulSoup,从HTML中提取这些标签的内容,并将其转换为纯文本格式。
3. LLM处理:有了纯文本数据后,我们将使用大型语言模型来进一步处理这些文本。这可能包括内容分类、关键信息提取、摘要生成等。
在这个例证中,我们将如何确保网络爬虫精准地抓取所需信息,以及如何调整大型语言模型以精确处理和提取有价值的内容,都是需要解决的问题。通过成功实施这一流程,我们不仅验证了LLM与Web爬虫结合的有效性,还进一步探索了如何通过自动化工具提高研究和分析的效率。
通过上面对关键问题的分析,让我们先为即将进行的技术旅程做好准备。从网页内容的加载到信息的转换,再到利用LLM提取关键数据,都是构建有效网络研究工具的关键环节。
首先,我们将面对的挑战是如何高效地加载网页内容。异步HTML加载器(AsyncHtmlLoader)扮演着至关重要的角色。使用aiohttp库构建的AsyncHtmlLoader能够进行异步HTTP请求,非常适合于简单轻量级的网页抓取工作。这意味着它能够同时处理多个URL的请求,提高了数据抓取的效率,特别是当我们需要从多个网站快速获取信息时。
对于那些更复杂的网站,其中的内容可能依赖于JavaScript渲染,我们可能需要更强大的工具,例如AsyncChromiumLoader。这个加载器利用Playwright来启动一个Chromium实例,它不仅可以处理JavaScript渲染,还可以应对更复杂的Web交互。Playwright是一个强大的库,支持多种浏览器自动化操作,其中Chromium就是一个被广泛支持的浏览器。
Chromium可以在无头模式下运行,即没有图形用户界面的浏览器,这在网页抓取中很常见。在无头模式下,浏览器后台运行,执行自动化任务,而用户不会看到任何的浏览器窗口。这样的操作对于服务器端的抓取任务尤其有用,因为它们可以模拟浏览器中的完整用户交互过程,而不需要实际显示界面。
无头模式,或称为“无界面模式”,是一种在不打开图形界面的情况下运行应用程序的方式。想象一下,你的电脑在执行一些任务,如下载文件、刷新数据或运行一个复杂的计算过程,而这一切都在没有打开任何窗口的情况下静静进行。这正是无头模式的工作原理。
在Web开发和自动化测试领域,无头模式尤为有用。例如,开发者可能需要测试一个网页在不同浏览器中的表现,但并不需要真正地视觉上检查这些网页,而是要检查代码的运行结果。在这种情况下,他们可以使用无头模式的浏览器来模拟用户的行为,如点击链接、填写表单等,同时浏览器本身不会在屏幕上显示。
实际上,我们介绍了AsyncHtmlLoader和AsyncChromiumLoader两种加载器,本例中我们使用前者就足够了,其示例代码如下:
from langchain.document_loaders import AsyncHtmlLoader
urls = ["https://www.wsj.com"]
loader = AsyncHtmlLoader(urls)
docs = loader.load()
TOP