成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

RAG維保案例分享:如何實現"文+圖"的答案呈現

人工智能
本篇以近期實施項目中的一個挖掘機維修場景為例,試圖給出一個針對標準化排版PDF 文檔(本文演示的固定格式維修手冊),使用基于坐標區域截取方法,結合Markdown 語法在回答中顯示圖片的示例,供大家參考。

RAG一直被看成是大模型在企業應用落地的標準配置,基于企業內部文檔的問答,已經解鎖出大量使用需求和場景。在這些眾多類型的文檔中,有相當一部分包含了各類復雜圖表,也就是所謂的多模態數據。

本篇以近期實施項目中的一個挖掘機維修場景為例,試圖給出一個針對標準化排版PDF 文檔(本文演示的固定格式維修手冊),使用基于坐標區域截取方法,結合Markdown 語法在回答中顯示圖片的示例,供大家參考。

以下,enjoy:

1、業務背景

說起挖掘機不禁讓人想到了藍翔,搜了下說是截止到 23 年年底,全國范圍的液壓挖掘機保有量在 200 萬臺左右。對于一名具體機主而言,在實際干活的過程中,可能碰到的來自發動機、電器、液壓、工作裝置等大大小小幾百個故障,這也讓專業的挖機維修需求一直很旺盛。

但對于維修人員而言,顯然有幾個一直以來的痛點沒有被很好解決,比如設備故障類型繁多,單靠個人經驗難以覆蓋所有問題。再有就是傳統老帶新的模式下,培訓帶教周期過長等。

圖片

注:維修案例示例內容

后文會介紹一個基于包含 500 多個維修案例合集,開發的挖掘機故障診斷知識庫系統,維修人員只需描述故障現象即可獲取相關案例,并支持圖文結合的答案呈現,直觀展示故障部位和維修方法。

2、系統架構

注:本項目擴展自阿里云官方的 local_rag 示例,添加了本地 PDF 圖片提取和顯示功能,

原項目地址:https://help.aliyun.com/zh/model-studio/use-cases/build-rag-application-based-on-local-retrieval?spm=a2c4g.11186623.help-menu-2400256.d_2_8.5a6771eeJWalDw#a2b0288504ybg 

圖片

?? 支持多種文檔類型(PDF、DOCX、TXT、XLSX、CSV)的上傳和處理

??? 智能 PDF 圖片提取與顯示

?? 本地知識庫構建與管理

?? 集成阿里云通義千問系列大語言模型

?? 支持非結構化數據和結構化數據處理

?? 可自定義 RAG 參數(召回數量、相似度閾值等)

3、核心技術實現

3.1文檔處理與圖片提取

系統提供了多種 PDF 圖片提取和處理方法,以適應不同場景需求:

1. 基于坐標的區域截取(推薦方法)

針對標準化排版的文檔(如固定格式的維修手冊),使用基于坐標的精確截取:

def extract_images_from_maintenance_pdf(pdf_path, label_name):
    image_mapping = {}
    doc = fitz.open(pdf_path)
    
    # 根據文檔格式定義的圖片區域坐標
    image_rect = fitz.Rect(400, 160, 750, 320)  # 右側中間區域
    
    for page_index, page in enumerate(doc):
        # 直接從固定區域截取圖片
        pix = page.get_pixmap(matrix=fitz.Matrix(2, 2), clip=image_rect)
        if is_valid_image(pix):
            # 保存和映射圖片...

優勢:

對固定格式文檔效果極佳

不受 PDF 內部圖像對象表示形式限制

可以捕獲矢量圖形和復合元素

提高圖片提取的準確率和質量

2. 基于對象標記的提取(備選方法)

使用 PyMuPDF 的內置功能識別 PDF 中的圖像對象:

def extract_images_from_pdf(pdf_path, label_name):
    doc = fitz.open(pdf_path)
    for page in doc:
        image_list = page.get_images(full=True)
        for img in image_list:
            # 提取和處理圖片...

局限性:

僅能提取 PDF 中顯式存儲的圖像對象

無法提取矢量圖形或作為背景的圖片

可能會提取裝飾性元素或無關圖形

3. 其他優化方案

基于內容分析的智能提取:結合文本標記定位圖片

多模態 LLM 輔助:使用視覺模型輔助識別復雜文檔中的圖片

3.2圖片處理流程

圖片

3.3RAG 技術實現

分塊策略

系統針對不同類型的數據采用不同的分塊策略:

非結構化文檔

documents = SimpleDirectoryReader(input_files=enhanced_files).load_data()
index = VectorStoreIndex.from_documents(documents)

結構化數據

nodes = []
for doc in documents:
    doc_content = doc.get_content().split('\n')
    for chunk in doc_content:
        node = TextNode(text=chunk)
        node.metadata = {'source': doc.get_doc_id()}
        nodes = nodes + [node]

嵌入模型

默認使用通義千問文檔嵌入模型:

EMBED_MODEL = DashScopeEmbedding(
    model_name=DashScopeTextEmbeddingModels.TEXT_EMBEDDING_V2,
    text_type=DashScopeTextEmbeddingType.TEXT_TYPE_DOCUMENT,
)


# 若使用本地嵌入模型,請取消以下注釋:
# from langchain_community.embeddings import ModelScopeEmbeddings
# from llama_index.embeddings.langchain import LangchainEmbedding
# embeddings = ModelScopeEmbeddings(model_id="modelscope/iic/nlp_gte_sentence-embedding_chinese-large")
# EMBED_MODEL = LangchainEmbedding(embeddings)

檢索策略

采用兩階段檢索策略:

向量相似度初篩

retriever_engine = index.as_retriever(similarity_top_k=20)
retrieve_chunk = retriever_engine.retrieve(prompt)

語義重排序

dashscope_rerank = DashScopeRerank(top_n=chunk_cnt)
results = dashscope_rerank.postprocess_nodes(retrieve_chunk, query_str=prompt)

注:比較初步的檢索策略,可根據實際情況進行調整

4. 圖片鏈接處理

只保留最相關文本塊中的圖片鏈接

移除其他文本塊的圖片鏈接

使用 Markdown 語法在回答中顯示圖片

prompt_template = """請參考以下內容,僅使用第一個最相關文本塊中的圖片鏈接。
如果在第一個文本塊中看到"圖片鏈接:",將其轉換為Markdown圖片語法。
請忽略其他文本塊中的圖片鏈接。
"""

4、使用指南

4.1上傳數據

系統支持兩種文件上傳方式:臨時上傳:直接在 RAG 問答頁面上傳文件,臨時使用

創建知識庫:在"上傳數據"頁面中上傳文件,并在"創建知識庫"頁面構建永久知識庫

支持的文件類型

非結構化數據:PDF、DOCX、TXT

結構化數據:XLSX、CSV

圖片

4.2創建知識庫

進入"創建知識庫"頁面

選擇已上傳的類目或數據表

設置知識庫名稱

點擊"確認創建知識庫"

4.3RAG 問答

flowchart TD
    A[用戶提問] --> B[獲取知識庫]
    B --> C[檢索相關文檔]
    C --> D[重排序文檔]
    D --> E[構建提示詞]
    E --> F[調用大語言模型]
    F --> G[生成回答]
    G --> H[顯示回答及圖片]

5、項目結構

main.py - FastAPI 應用入口和 Gradio 界面定義

chat.py - RAG 問答核心功能和大模型調用

upload_file.py - 文件上傳和處理邏輯,包括 PDF 圖片提取

create_kb.py - 知識庫創建和管理

html_string.py - Web 界面 HTML 模板

File/ - 存放上傳的文件

VectorStore/ - 存放向量數據庫

static/images/ - 存放提取的圖片

images/ - UI 頭像圖片

6、自定義與擴展

修改嵌入模型

可以使用本地嵌入模型替代云端 API。

在create_kb.py和chat.py中取消相關注釋并安裝額外依賴。

優化提示詞模板

修改chat.py中的prompt_template變量以定制提示詞模板。

添加新的文檔類型支持

擴展upload_file.py中的處理邏輯以支持更多文件類型。

責任編輯:龐桂玉 來源: 韋東東
相關推薦

2025-05-22 06:23:48

2024-06-24 14:32:33

2024-04-19 10:31:12

物聯網智能建筑樓宇自控

2010-07-28 08:44:12

Flex2.0

2025-02-24 09:33:10

2017-05-16 10:05:08

2011-08-03 11:00:29

IT運維管理ITIL

2010-06-10 09:49:38

UML時序圖

2018-12-14 16:43:05

維締技術

2021-06-25 17:31:22

安全防御

2015-05-13 11:12:19

Linux企業運維技巧

2025-05-20 11:55:22

人工智能Vision RAGLLM

2017-04-12 08:39:55

大數據可視化動畫

2015-01-13 17:35:30

BPM選型

2025-05-20 08:50:00

2025-04-10 00:12:00

2023-03-02 09:17:50

全鏈路監控系統

2022-02-28 08:09:14

sql分頁查詢

2012-12-12 12:08:47

2013-05-23 14:10:58

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩视频在线观看中文字幕 | 久久夜夜 | 日本久久视频 | 91精品国产综合久久久久久丝袜 | 亚洲精品免费在线观看 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 精精久久| 国产免费黄网 | 一区二区三区四区在线 | 日韩二区 | 欧美视频一区二区三区 | www.久| 隔壁老王国产在线精品 | 九色网址 | 成年人免费在线视频 | 中文字幕精品一区 | 精品国产乱码久久久久久蜜臀 | 日韩在线欧美 | 搞黄视频免费看 | 精品国产黄色片 | 亚洲精品乱码久久久久久9色 | 97精品超碰一区二区三区 | 亚洲高清一区二区三区 | 国产电影一区二区在线观看 | 亚洲专区在线 | 欧美日韩综合视频 | 在线看亚洲 | 97人人澡人人爽91综合色 | 亚洲视频观看 | 91资源在线| 欧美三区在线观看 | 久久www免费人成看片高清 | av手机在线免费观看 | 亚洲视频在线播放 | 午夜一区二区三区在线观看 | 国产欧美综合在线 | 日韩一级黄色片 | 色综合99| 一区精品视频在线观看 | 国产精品一区三区 | 91在线一区二区三区 |