国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RAG實踐:一文掌握大模型RAG過程

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2025-10-27 18:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、RAG是什么?

RAG(Retrieval-Augmented Generation,檢索增強生成), 一種AI框架,將傳統的信息檢索系統(例如數據庫)的優勢與生成式大語言模型(LLM)的功能結合在一起。不再依賴LLM訓練時的固有知識,而是在回答問題前,先從外部資料庫中"翻書"找資料,基于這些資料生成更準確的答案。

?RAG技術核心緩解大模型落地應用的幾個關鍵問題:

?知識新鮮度:大模型突破模型訓練數據的時間限制

?幻覺問題:降低生成答案的虛構概率,提供參照來源

?信息安全:通過外掛知識庫而不是內部訓練數據,減少隱私泄露

?垂直領域知識:無需訓練直接整合垂直領域知識

二、RAG核心流程

wKgZO2jZEC2AGKWkAAfb05cfWYU080.png

2.1 知識準備階段

1、數據預處理

1、文檔解析

?輸入:原始文檔(如Markdown/PDF/HTML)

?操作

?提取純文本(如解析Markdown標題、段落)

?處理特殊格式(如代碼塊、表格、圖片、視頻等)

例如:

[標題] 什么是 ROMA?
[段落] ROMA 是一個全自主研發的前端開發基于自定義DSL(Jue語言),一份代碼,可在iOS、Android、Harmony、Web四端運行的跨平臺解決方案。
[段落] ROMA 框架的中文名為羅碼。
[標題] 今天天氣
[列表項] 今天的室外溫度為35°C,天氣晴朗。

文檔的解析過程需要考慮不同文檔內容例如文本、圖片、表格等場景,以及文檔的語言,布局情況,可以考慮使用一些優秀的三方工具或者一些視覺模型,布局分析模型,語義理解模型來輔助解析。

2、數據清洗與標準化處理

提升文本質量和一致性,使向量表示更準確,從而增強檢索相關性和LLM回答質量;同時消除噪聲和不規則格式,確保系統能正確理解和處理文檔內容。

包括:

?去除特殊字符、標簽、亂碼、重復內容。

?文本標準化,例如 時間、單位標準化(如“今天” → “2025-07-17”)。

?其他處理

數據的清洗和標準化過程可以使用一些工具或NLTK、spaCy等NLP工具進行處理。

例如:

ROMA框架
處理: 
"ROMA框架"

今天的室外溫度為35°C,天氣晴朗。
處理:
"2025-07-17 的室外溫度為35°C,天氣晴朗"

3、元數據提取

關于數據的數據,用于描述和提供有關數據的附加信息。

?文檔來源:文檔的出處,例如URL、文件名、數據庫記錄等。

?創建時間:文檔的創建或更新時間。

?作者信息:文檔的作者或編輯者。

?文檔類型:文檔的類型,如新聞文章、學術論文、博客等。

?...

?

元數據在RAG中也非常重要,不僅提供了額外的上下文信息,還能提升檢索質量:

1. 檢索增強

?精準過濾:按時間、作者、主題等縮小搜索范圍

?相關性提升:結合向量相似度和元數據特征提高檢索準確性

2. 上下文豐富

?來源標注:提供文檔來源、作者、發布日期等信息

?文檔關系:展示文檔間的層級或引用關系

?

常見的元數據提取方式:

?正則/HTML/... 等解析工具,提取標題、作者、日期等

?自然語言處理: 使用NLP技術(如命名實體識別、關鍵詞提取)從文檔內容中提取元數據,如人名、地名、組織名、關鍵詞等

?機器學習模型: 訓練機器學習模型來自動提取元數據

?通過調用外部API(如Google Scholar API、Wikipedia API)獲取文檔的元數據

?...

例如:

complete_metadata_chunk1 = {
    'file_path': '/mydocs/roma_intro.md',
    'file_name': 'roma_intro.md',
    'chunk_id': 0,
    'section_title': '# 什么是 ROMA?',
    'subsection_title': '',
    'section_type': 'section',
    'chunking_strategy': 3,
    'content_type': 'product_description',
    'main_entity': 'ROMA',
    'language': 'zh-CN',
    'creation_date': '2025-07-02',  # 從文件系統獲取
    'word_count': 42  # 計算得出,
    'topics': ['ROMA', '前端框架', '跨平臺開發'],
    'entities': {
        'products': ['ROMA', 'Jue語言'], # 實體識別
        'platforms': ['iOS', 'Android', 'Web']
    },
}

2、內容分塊(Chunking)

在RAG架構中,分塊既是核心,也是挑戰,它直接影響檢索精度、生成質量,需要在檢索精度、語境完整性和計算性能之間取得平衡。

wKgZPGjZEC6ABU4EAALWukTI-9k023.png

內容分塊將長文檔切分成小塊,可以解決向量模型的token長度限制,使RAG更精確定位相關信息,提升檢索精度和計算效率。

autobots 功能分塊:

wKgZO2jZEC-AbY7NAALm7qAZTmE964.png

實際RAG框架中按照文檔的特性選擇合適的分塊策略進行分塊.

常見的分塊策略

1. 按大小分塊

按固定字符數進行分塊,實現簡單但可能切斷語義單元。

優點:實現簡單且計算開銷小,塊大小均勻便于管理。

缺點:可能切斷語義單元,如句子或段落被分到不同塊中。

例如:

第一段:# ROMA框架介紹ROMA是一個全自主研發的前端開發框架,基于自定義DSL(Jue語言)。
一份代碼,可在iOS、Android、Harmony

第二段:、Web三端運行的跨平臺解決方案。ROMA框架的中文名為羅碼。

句子被截斷,"一份代碼,可在iOS、Android、Harmony" 和 "、Web三端運行的跨平臺解決方案" 被分到不同塊,影響理解。

2. 按段落分塊

以段落為基本單位進行分塊,保持段落完整性,但段落長度可能差異很大。

優點:尊重文檔自然結構,保留完整語義單元。

缺點:段落長度差異大,可能導致塊大小不均衡。

例如

第一段:# ROMA框架介紹ROMA是一個全自主研發的前端開發框架,基于自定義DSL(Jue語言)。
一份代碼,可在iOS、Android、Harmony、Web三端運行的跨平臺解決方案。ROMA框架的中文名為羅碼。

第二段:# 核心特性1. 跨平臺:一套代碼運行于多端2. 高性能:接近原生的性能表現3. 可擴展:豐富的插件系統

第一段包含標題和多行內容,而其他段落相對較短,可能導致檢索不均衡。

3. 按語義分塊

基于文本語義相似度進行動態分塊,保持語義連貫性,但計算開銷大。

說明:基于文本語義相似度動態調整分塊邊界。

優點:保持語義連貫性,能識別內容主題邊界。

示例

第一段:# ROMA框架介紹ROMA是一個全自主研發的前端開發框架,基于自定義DSL(Jue語言)。
一份代碼,可在iOS、Android、Harmony、Web四端運行的跨平臺解決方案。

第二段:ROMA框架的中文名為羅碼。
## 核心特性1. 跨平臺:一套代碼運行于多端

使用依賴模型質量,相同文本在不同運行中可能產生不同分塊結果。

分塊策略總結:

wKgZO2jZEC-Adzx6AAENqNakzIk961.png

優化方式

?混合分塊策略

結合多種分塊方法的優點,如先按段落分塊,再根據塊大小調整,做到既保持語義完整性,又能控制塊大小均勻

?優化重疊區域

根據內容特性動態調整塊之間的重疊區域大小,關鍵信息出現在多個塊中,提高檢索召回率

常用的分塊工具

?LangChain框架:提供多種分塊策略,包括RecursiveCharacterTextSplitter、MarkdownTextSplitter等

?NLTK:用于基于自然語言句子的分塊

?spaCy:提供語言學感知的文本分割

?

3、向量化(Embedding)

將高維文本數據壓縮到低維空間,便于處理和存儲。將文本轉換為計算機可以理解的數值,使得計算機能夠理解和處理語義信息,從而在海量數據文本中實現快速、高效的相似度計算和檢索。

簡單理解:通過一組數字來代表文本內容的“本質”。

例如,"ROMA是一個跨平臺解決方案..."這句話可能被轉換為一個384維的向量:

[塊1] 什么是ROMA?
ROMA是一個全自主研發的前端開發框架,基于自定義DSL(Jue語言)...

[
  {
    "chunk_id": "doc1_chunk1",
    "text": "# 什么是 ROMA?nROMA 是一個全自主研發的前端開發基于自定義DSL(Jue語言),一份代碼,可在iOS、Android、Harmony、Web端運行的跨平臺解決方案。",
    "vector": [0.041, -0.018, 0.063, ..., 0.027],
    "metadata": {
      "source": "roma_introduction.md",
      "position": 0,
      "title": "ROMA框架介紹"
    }
  },
  // 更多文檔塊...
]

常用的Embedding模型

模型名稱 開發者 維度 特點
all-minilm-l6-v2 Hugging Face 384 高效推理,多任務支持,易于部署,適合資源受限環境
Text-embedding-ada-002 OpenAI 1536 性能優秀,但可能在國內使用不太方便。
BERT embedding Google 768 (base) 1024 (large) 廣泛用于各種自然語言處理任務。
BGE (Baidu’s General Embedding) 百度 768 在HuggingFace的MTEB上排名前2,表現非常出色。

?

4、向量數據庫入庫

將生成的向量數據和元數據進行存儲,同時創建索引結構來支持快速相似性搜索。

常用的向量數據庫包括:

數據庫 復雜度 核心優勢 主要局限 適用場景
ChromaDB 輕量易用, Python集成 僅支持小規模數據 原型開發、小型項目
FAISS 十億級向量檢索, 高性能 需自行實現特殊化 學術研究、大規模檢索
Milvus 分布式擴展, 多數據類型支持 部署復雜, 資源消耗大 企業級生產環境
Pinecone 全托管, 自動擴縮容 成本高, 數據在第三方云 無運維團隊/SaaS應用
Elasticsearch 全文搜索強大,生態系統豐富 向量搜索為后加功能,性能較專用解決方案差 日志分析、全文搜索、通用數據存儲

2.2 問答階段

1、查詢預處理

` 意圖識別:使用分類模型區分問題類型(事實查詢、建議、閑聊等)。

問題預處理:問題內容清洗和標準化,過程與前面數據預處理類似。

查詢增強: 使用知識庫或LLM生成同義詞(如“動態化” → “Roma”),上下文補全可以結合歷史會話總結(例如用戶之前問過“Roma是什么”)。

?

2、數據檢索(召回)

1、向量化

使用與入庫前數據向量化相同的模型,將處理后的問題內容向量化。

例子:

問題: "ROMA是什么?"

處理后
{
    "vector": [0.052, -0.021, 0.075, ..., 0.033],
    "top_k": 3,
    "score_threshold": 0.8,
    "filter": {"doc_type": "技術文檔"}
}

2、檢索

相似度檢索:查詢向量與所存儲的向量最相似(通過余弦相似度匹配)的前 top_k 個文檔塊。

關鍵詞檢索:倒排索引的傳統方法,檢索包含"Roma"、"優勢"等精確關鍵詞的文檔。

混合檢索: 合并上面多種檢索結果,效果最優。

例如:檢索"ROMA是什么?"

wKgZPGjZEDCAGlC3AAQKeDWOw04663.png

3、重排序(Reranking)

初步檢索在精度和語義理解上的不足,通過更精細的上下文分析提升結果相關性。它能更好處理同義詞替換、一詞多義等語義細微差異,使最終結果準確。

原理:使用模型對每個檢索結果計算相關性分數。

歸一化:重排序模型原始輸出分數沒有固定的范圍,它可能是任意實數,將結果歸一化處理,將分數映射到 [0, 1] 范圍內,使其更容易與向量相似度分數進行比較。

例如:

wKgZO2jZEDGALEU-AADQvd_ULCI264.png

常用的重排序模型:

wKgZPGjZEDKAf58oAAKGhnJcCUA764.png

?

3、信息整合

格式化檢索的結果,構建提示詞模板,同時將搜索的內容截斷或摘要長文本以適應LLM上下文窗口token。

提示詞優化:

1. 限定回答范圍

2. 要求標注來源

3. 設置拒絕回答規則

4. ...

例如:

prompt 模板:

你是一名ROMA框架專家,請基于以下上下文回答:

參考信息:
[文檔1] 什么是 ROMA?
ROMA 是一個全自主研發的前端開發基于自定義DSL(Jue語言),一份代碼,可在iOS、Android、Harmony、Web四端運行的跨平臺解決方案。
ROMA 框架的中文名為羅碼。
[文檔2] Roma介紹?
[Roma介紹](docs/guide/guide/introduction.md)
文檔地址: https://roma-design.jd.com/docs/guide/guide/introduction.html

要求:
1. 分步驟說明,含代碼示例
2. 標注來源文檔版本
3. 如果參考信息中沒有相關內容,請直接說明無法回答,不要編造信息

請基于以下參考信息回答用戶的問題。如果參考信息中沒有相關內容,請直接說明無法回答,不要編造信息。


用戶問題: ROMA是什么?

回答: {answer}

4、LLM生成

向LLM(如GPT-4、Claude)發送提示,獲取生成結果。

autobots示例:

wKgZO2jZEDOAL7HtAAKSJ2DfE54710.png

以上,實現了最簡單的RAG流程。實際的RAG過程會比上述麻煩更多,包括圖片、表格等多模態內容的處理,更復雜的文本解析和預處理過程,文檔格式的兼容,結構化與非結構化數據的兼容等等。

?

最后RAG各階段優化方式:

wKgZPGjZEDaASAIvABwnkgo9q6U998.png

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    4018

    瀏覽量

    68329
  • 大模型
    +關注

    關注

    2

    文章

    3647

    瀏覽量

    5176
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    TaD+RAG-緩解大模型“幻覺”的組合新療法

    TaD:任務感知解碼技術(Task-aware Decoding,簡稱TaD),京東聯合清華大學針對大語言模型幻覺問題提出的項技術,成果收錄于IJCAI2024。 RAG:檢索增強生成技術
    的頭像 發表于 07-16 15:01 ?1.7w次閱讀
    TaD+<b class='flag-5'>RAG</b>-緩解大<b class='flag-5'>模型</b>“幻覺”的組合新療法

    名單公布!【書籍評測活動NO.52】基于大模型RAG應用開發與優化

    外掛。 用個例子幫助理解RAG的概念: 如果把大模型比喻成個經過大量知識與技能訓練的優秀學生,把大模型響應的
    發表于 12-04 10:50

    【「基于大模型RAG應用開發與優化」閱讀體驗】+大模型微調技術解讀

    今天學習<基于大模型RAG應用開發與優化>這本書。大模型微調是深度學習領域中的項關鍵技術,它指的是在已經預訓練好的大型深度學習模型
    發表于 01-14 16:51

    【「基于大模型RAG應用開發與優化」閱讀體驗】+Embedding技術解讀

    今天學習大模型RAG 檢索增強生成技術Embedding,即嵌入,是種將離散數據(如文字、圖像、音頻等)轉換為連續的密集向量表示的技術。這些向量能夠反映原始數據之間的關系,使得計算機能夠更好地處
    發表于 01-17 19:53

    【「基于大模型RAG應用開發與優化」閱讀體驗】+第章初體驗

    機制。 《基于大模型RAG應用開發與優化》第章以清晰的邏輯框架,幫助讀者建立對大模型RAG的全局認知。通過剖析技術原理、優勢與挑戰
    發表于 02-07 10:42

    【「基于大模型RAG應用開發與優化」閱讀體驗】RAG基本概念

    隨著大模型在25年初的進步發展,RAG應用已成為新的個趨勢,很榮幸有機會試讀這本<基于大模型
    發表于 02-08 00:22

    《AI Agent 應用與項目實戰》閱讀心得3——RAG架構與部署本地知識庫

    分析模型在不同類型數據上的表現,來優化文本分割策略和檢索參數,使系統在保持響應速度的同時,能夠提供更準確的查詢結果。 經過對第6-7章的深入學習,我對RAG技術在工程實踐中的應用有了更系統的認識。這
    發表于 03-07 19:49

    RAG(檢索增強生成)原理與實踐

    ,它通過結合外部知識庫和生成模型,顯著提升了AI回答的準確性和時效性。 本文將深入探討RAG的核心原理,重點解析向量檢索和上下文注入兩大關鍵技術,并提供實踐指導。 、
    發表于 02-11 12:46

    搜索出生的百川智能大模型RAG爬坑之路總結

    今天對百川的RAG方法進行解讀,百川智能具有深厚的搜索背景,來看看他們是怎么爬RAG的坑的吧~
    的頭像 發表于 01-05 15:02 ?2695次閱讀
    搜索出生的百川智能大<b class='flag-5'>模型</b><b class='flag-5'>RAG</b>爬坑之路總結

    阿里云推出企業級大模型RAG系統

    在國際AI大數據峰會上,阿里云重磅推出了企業級大模型檢索增強生成(RAG)解決方案。這解決方案旨在為企業提供更強大、更智能的大模型應用工具,幫助企業更有效地利用大數據和人工智能技術。
    的頭像 發表于 02-05 09:54 ?1973次閱讀

    什么是RAGRAG學習和實踐經驗

    高級的RAG能很大程度優化原始RAG的問題,在索引、檢索和生成上都有更多精細的優化,主要的優化點會集中在索引、向量模型優化、檢索后處理等模塊進行優化
    的頭像 發表于 04-24 09:17 ?2980次閱讀
    什么是<b class='flag-5'>RAG</b>,<b class='flag-5'>RAG</b>學習和<b class='flag-5'>實踐</b>經驗

    如何手擼個自有知識庫的RAG系統

    用于自然語言處理任務,如文本生成、問答系統等。 我們通過下幾個步驟來完成個基于京東云官網文檔的RAG系統 數據收集 建立知識庫 向量檢索 提示詞與模型 數據收集 數據的收集再整個
    的頭像 發表于 06-17 14:59 ?1521次閱讀

    使用OpenVINO和LlamaIndex構建Agentic-RAG系統

    解決大語言模型在知識時效性和專業性上的不足。但同時傳統的 RAG 系統也有它的缺陷,例如靈活性較差,由于 RAG 會過分依賴于向量數據庫的檢索結果,導致其在解決些復雜問題的時候,只是
    的頭像 發表于 10-12 09:59 ?1620次閱讀
    使用OpenVINO和LlamaIndex構建Agentic-<b class='flag-5'>RAG</b>系統

    Cloudera推出RAG Studio,助力企業快速部署聊天機器人

    企業在利用實時企業數據部署RAG聊天機器人方面邁出了重要步,且整個過程僅需幾分鐘。 RAG Studio是款無代碼解決方案,它極大地簡化
    的頭像 發表于 12-12 11:06 ?1186次閱讀

    RAG的概念及工作原理

    檢索增強型生成(RAG)系統正在重塑我們處理AI驅動信息的方式。作為架構師,我們需要理解這些系統的基本原理,從而有效地發揮它們的潛力。 什么是RAG? 總體而言,RAG系統通過將大型語言模型
    的頭像 發表于 12-17 13:41 ?3368次閱讀
    <b class='flag-5'>RAG</b>的概念及工作原理