当前位置: 首页
AI教程
天学会AI应用开发第十二课:从PDF、Word和网页构建RAG

天学会AI应用开发第十二课:从PDF、Word和网页构建RAG

热心网友 时间:2026-07-11
转载

上一篇文章介绍了如何从TXT文件中读取文本内容,但在日常办公场景中,纯文本文件的使用频率并不高。更常见的需求是处理PDF、Word等文档格式,同时还需要从网页中提取知识信息。 因此,本篇文章将重点讲解如何从PDF、Word以及网页中提取内容,并将其应用于RAG(检索增强生成)系统。 一、从PDF文件

上一篇文章介绍了如何从TXT文件中读取文本内容,但在日常办公场景中,纯文本文件的使用频率并不高。更常见的需求是处理PDF、Word等文档格式,同时还需要从网页中提取知识信息。

15天学会AI应用开发(十二)从PDF、WORD、网页构建RAG

因此,本篇文章将重点讲解如何从PDF、Word以及网页中提取内容,并将其应用于RAG(检索增强生成)系统。

一、从PDF文件中高效提取文本内容

PDF格式在日常工作中非常普遍,无论是通知文件还是电子书,大多采用这种格式。Python生态中提供了多种处理PDF的库,其中pdfplumber是最常用的之一。在使用前需要先安装:

pip install pdfplumber

安装完成后,调用pdfplumber的open方法打开文件,逐页提取文本并拼接即可。示例代码如下:

import pdfplumber

def read_from_pdf(file_path):
    full_text = ""
    with pdfplumber.open(file_path) as pdf:
        for page in pdf.pages:
            page_text = page.extract_text()
            if page_text:
                full_text += page_text + "n"
    return full_text

逻辑非常简单:打开PDF文件,逐页读取文本,最后将所有内容拼接成一个字符串。

二、从Word文档中读取文本内容

DOCX格式就是常见的Word文档,处理这种文件推荐使用python-docx库。同样,先安装:

pip install python-docx

使用Document打开文件后,不仅可以读取段落文本,还能提取表格中的内容。来看代码示例:

from docx import Document

def read_from_word(file_path):
    doc = Document(file_path)
    content = []
    # 读取段落
    for para in doc.paragraphs:
        t = para.text.strip()
        if t:
            content.append(t)
    # 读取表格内容
    for table in doc.tables:
        for row in table.rows:
            for cell in row.cells:
                t = cell.text.strip()
                if t:
                    content.append(t)
    return "n".join(content)

表格内容的读取常被新手忽略,但在实际项目中表格数据往往非常关键,务必不要遗漏。

三、从网页中爬取并读取文本内容

除了本地文件,互联网上的资料也是一个庞大的知识库。如何高效提取网页内容?推荐使用trafilatura库,它能自动过滤广告、导航栏等干扰元素,只保留核心正文。安装命令:

pip install trafilatura

配合requests库请求网页,再通过trafilatura提取纯净文本。代码如下:

import requests
import trafilatura

def get_webpage_text(url):
    # 请求网页
    headers = {"User-Agent":"Mozilla/5.0"}
    resp = requests.get(url, headers=headers, timeout=10)
    resp.encoding = "utf-8"
    # 自动提取纯净正文(剔除广告导航)
    raw = trafilatura.extract(resp.text)
    return raw if raw else "提取失败"

User-Agent设置非常重要,如果不配置,请求可能会被服务器拦截。同时,建议设置timeout参数,避免请求长时间等待。

四、构建基于网页的在线知识库RAG系统

仅仅学会读取还不够,我们需要将获取的内容实际应用起来。结合之前介绍的BGE-small模型和FAISS向量库,可以构建一个基于网页的在线RAG系统。

在编写代码之前,先安装所需的依赖库:

pip install faiss-cpu sentence

接下来编写完整的检索测试代码。与之前教程相比,最大的变化是将knowledge数组从手动输入改为从网页自动拉取并分块处理:

from sentence_transformers import SentenceTransformer
import faiss
import numpy as np
import requests
import trafilatura

# 加载一整段文本
def get_webpage_text(url):
    headers = {"User-Agent":"Mozilla/5.0"}
    resp = requests.get(url, headers=headers, timeout=10)
    resp.encoding = "utf-8"
    raw = trafilatura.extract(resp.text)
    return raw if raw else "提取失败"

# 读取一整段文本,并把换行符换成句号
url = "https://www.nhsa.gov.cn/art/2025/12/25/art_14_19130.html"
raw_text = get_webpage_text(url)

# 自动把一段文字切成多段
def split_text(text, max_len=50):
    sentences = text.split("。")  # 按句号分割
    chunks = []
    current = ""
    for sen in sentences:
        sen = sen.strip()
        if not sen:
            continue
        sen += "。"  # 加回去句号,让语义完整
        if len(current) <= max_len:
            current += sen
        else:
            if current:
                chunks.append(current.strip())
            current = sen
    if current:
        chunks.append(current.strip())
    return chunks

# 自动分块
knowledge = split_text(raw_text)

# 加载本地已有的模型
embed_model = SentenceTransformer("./bge-small-zh-v1.5", device="cpu")

# 生成向量(把知识库向量化)
vectors = embed_model.encode(knowledge)

# 构建 FAISS 索引
index = faiss.IndexFlatL2(vectors.shape[1])
index.add(np.array(vectors).astype("float32"))

# RAG 检索
def rag(question):
    print("n 问题:" + question)
    q_vec = embed_model.encode([question])
    D, I = index.search(np.array(q_vec).astype("float32"), 1)
    best = knowledge[I[0][0]]
    answer = best.split(":")[-1]
    print(" 答案:" + answer)
    print("-" * 50)

# 运行
if __name__ == "__main__":
    print("=== 本地智能 RAG 系统:问什么答什么 ===")
    while True:
        q = input("n请输入问题(q退出):")
        if q.lower() == "q":
            break
        rag(q)

运行程序后,依次输入“GS1码是什么?”“GS1编码是什么?”“GS1码有什么作用?”,输出结果如下:

=== 本地智能 RAG 系统:问什么答什么 ===

请输入问题(q退出):GS1码是什么?
 问题:GS1码是什么?
 答案:国际 GS1 编码体系。GS1码在药品追溯体系中的应用。在药品追溯中,GS1码通常由数字、字母和符号组成,常见载体为二维码格式。
--------------------------------------------------

请输入问题(q退出):GS1编码是什么?
 问题:GS1编码是什么?
 答案:最后一种就是国际 GS1 编码(Global Standard 1,即全球统一编码标识系统)GS1编码载体为二维码,多见于进口药品。
--------------------------------------------------

请输入问题(q退出):GS1码有什么作用?
 问题:GS1码有什么作用?
 答案:采集GS1码的准备工作。在我国医药市场上,吉利德、安进、辉瑞、渤健、强生等公司的部分或全部药品采用了GS1码作为药品追溯码,大部分医疗器械也都使用GS1码制进行追溯。
--------------------------------------------------

从输出日志来看,回答基本准确。这表明通过BGE-small和FAISS的组合,成功实现了对网页内容的在线检索。整个流程其实并不复杂,核心就是利用trafilatura提取正文、BGE-small进行向量化、FAISS构建索引并检索,三步即可完成。

来源:https://bbs.huaweicloud.com/blogs/481732

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
跨境物流AI Agent感知决策全链路自动化技术拆解

跨境物流AI Agent感知决策全链路自动化技术拆解

2026年,跨境物流领域正迎来一场根本性变革——从“被动记录”全面迈向“主动执行”,AI智能体正在重塑整个行业格局。 你可能已经深有体会:每天一到岗,光是后台处理货件创建、物流追踪等重复操作,就要耗费数小时之久。行业调研数据显示,超过60%的运营人员每天至少花费2小时在这些机械性劳动上,而手动操作引

时间:2026-07-11 16:50
天学会AI应用开发第十二课:从PDF、Word和网页构建RAG

天学会AI应用开发第十二课:从PDF、Word和网页构建RAG

上一篇文章介绍了如何从TXT文件中读取文本内容,但在日常办公场景中,纯文本文件的使用频率并不高。更常见的需求是处理PDF、Word等文档格式,同时还需要从网页中提取知识信息。 因此,本篇文章将重点讲解如何从PDF、Word以及网页中提取内容,并将其应用于RAG(检索增强生成)系统。 一、从PDF文件

时间:2026-07-11 16:50
Hy3+WorkBuddy组合国产顶级Agent附完整提示词

Hy3+WorkBuddy组合国产顶级Agent附完整提示词

五个 Case 跑完,总结一下整体体验。工具使用能力:能不能自己开网页、找信息、标出处。规划能力:能不能把多约束需求拆成可执行步骤。长程执行能力:跨多步任务时会不会丢状态。复杂推理能力:能不能先推导、再写代码、再执行验证。WorkBuddy+Hy3 的表现完全符合预期。趁着 WorkBuddy 里的

时间:2026-07-11 16:50
AI Agent是什么?一文理解大语言模型、记忆、技能、工具、MCP、工作流与上下文

AI Agent是什么?一文理解大语言模型、记忆、技能、工具、MCP、工作流与上下文

智能体并非单一模型,而是由大语言模型、记忆、工具、工作流等模块协同构成的自主系统。它通过理解目标、检索记忆、调用工具、构建上下文、推理决策,并基于反馈闭环持续迭代,最终自主完成复杂任务。

时间:2026-07-11 16:50
DeepSeek决定自研芯片打造人工智能全新算力芯脏

DeepSeek决定自研芯片打造人工智能全新算力芯脏

被“逼”出来的第三条路。 一直以模型技术见长的DeepSeek,这次在算力供应链上迈出了让所有人侧目的一步。 2026年7月7日,路透社援引三位知情人士消息,DeepSeek正在悄然开发自有AI芯片。值得玩味的是,这颗芯片的定位非常精准——专攻推理,不涉足训练。消息人士称,项目大约启动于一年前,目前

时间:2026-07-11 16:28
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜