從0到1構(gòu)建 RAG 知識庫(券商客服案例實(shí)戰(zhàn))

0 評論 1535 瀏覽 12 收藏 21 分鐘

RAG 不只是技術(shù)熱詞,它正在重塑企業(yè)知識系統(tǒng)的構(gòu)建方式。本文以券商客服場景為例,系統(tǒng)拆解從0到1構(gòu)建 RAG 知識庫的全過程:從數(shù)據(jù)準(zhǔn)備、向量化、檢索策略到生成邏輯,不僅有技術(shù)路徑,也有業(yè)務(wù)思維。

客戶打來電話問:“我港股賬戶昨天除權(quán),今天為什么顯示持倉減少了?”

如果是人工客服,往往需要翻公告、查系統(tǒng)、確認(rèn)結(jié)算規(guī)則,幾分鐘才能給出解釋。

而在智能客服場景下,如果知識庫沒構(gòu)建好,模型可能會一本正經(jīng)地胡說八道。

有時(shí)答非所問,有時(shí)干脆甩一句:請聯(lián)系人工客服……

這正是很多金融機(jī)構(gòu)在大模型落地中遇到的最大瓶頸:模型有能力,卻沒有“業(yè)務(wù)知識”。 要讓 AI 真正懂業(yè)務(wù)、答得準(zhǔn),就必須構(gòu)建一套屬于自己的 RAG 知識庫

本文結(jié)合券商智能客服的實(shí)踐案例,帶你走完整個(gè)知識庫的構(gòu)建流程——從 數(shù)據(jù)提取、數(shù)據(jù)清洗與格式化、內(nèi)容切分、向量化,到數(shù)據(jù)入庫,逐步揭開 RAG 知識庫背后的秘密~

在構(gòu)建領(lǐng)域知識庫時(shí),我們需要考慮具體的五個(gè)階段:

第一階段:數(shù)據(jù)提取

這里我們會遇到兩大類數(shù)據(jù):

1.1 結(jié)構(gòu)化的數(shù)據(jù)(excel、csv、 json)

特點(diǎn):數(shù)據(jù)已經(jīng)按照表格/字段存儲,有固定格式,能直接拿來用

例如:

  • 數(shù)據(jù)庫表:SQL數(shù)據(jù)庫中的表格(如產(chǎn)品信息、用戶數(shù)據(jù)、交易記錄)。
  • 知識圖譜:實(shí)體-關(guān)系三元組(如維基百科的Wikidata、企業(yè)內(nèi)部的領(lǐng)域知識圖譜)。
  • API接口:從外部系統(tǒng)(如CRM、ERP)拉取的實(shí)時(shí)結(jié)構(gòu)化數(shù)據(jù)(如客戶訂單、庫存狀態(tài))。

以券商場景為例:

  • 交易規(guī)則表:如“美股交易時(shí)間表(開市9:30,收市16:00,T+2交收規(guī)則)”
  • 費(fèi)率表:股票傭金、印花稅、過戶費(fèi)等,已經(jīng)整理成Excel或數(shù)據(jù)庫
  • 賬戶信息:開戶狀態(tài)、資金流水、持倉記錄等

這些數(shù)據(jù)就像是已經(jīng)排列好的“excel 表格”只要對接數(shù)據(jù)庫/接口。就能直接入庫。

那非結(jié)構(gòu)化數(shù)據(jù)是什么呢?

1.2 非結(jié)構(gòu)化數(shù)據(jù)

特點(diǎn):數(shù)據(jù)是“原材料”,沒有統(tǒng)一格式,需要先清洗/切分后才能用

  • PDF/Word/PPT(如技術(shù)手冊、政策文件、合同);
  • 網(wǎng)頁內(nèi)容(通過爬蟲抓取的行業(yè)報(bào)告、論壇討論);
  • 書籍/論文:學(xué)術(shù)文獻(xiàn)(如ArXiv、PubMed)、教科書、專利文檔;
  • 社交媒體:Reddit、Twitter、知乎等平臺的討論(需清洗噪聲);
  • 聊天記錄:客服對話、用戶反饋(需脫敏處理)。

券商場景的非結(jié)構(gòu)化數(shù)據(jù)長什么樣的,這里給大家枚舉一些:

  • 公告、招股書類PDF:公司行動公告(分紅、配股、合股拆股)、IPO招股書等都是非結(jié)構(gòu)化文件;
  • 客服對話記錄:用戶提問“為什么我的港股紅利還沒到賬?”→語氣口語化,冗余信息多;
  • 語音/錄音:用戶打電話咨詢,產(chǎn)生的音頻文件;
  • 網(wǎng)頁/幫助中心文章:FAQ頁面的內(nèi)容多是長文本,沒有表格化。

這些數(shù)據(jù)就像一堆“原礦石”,必須通過 OCR、語音轉(zhuǎn)寫、文本切分等方式“提煉”成知識片段,才能被檢索和調(diào)用。

第二階段:數(shù)據(jù)清洗及格式化

數(shù)據(jù)清洗及格式化:將不同格式的數(shù)據(jù)內(nèi)容提取為純文本

2.1 FAQ類數(shù)據(jù)如何清洗

  • 問題去重:同義問題合并(如“怎么開港股賬戶”和“開通港股賬戶流程”歸為一類)
  • 回答標(biāo)準(zhǔn)化:回答中去除冗余模板內(nèi)容,如“您好,感謝您咨詢…”等。
  • 標(biāo)簽補(bǔ)全:為每條FAQ打上【開戶】【交易】【港股】等語義標(biāo)簽,方便后續(xù)向量分組。
  • 格式檢查:確保問題不為空、回答字符集不亂(常見亂碼問題)
  • 脫敏處理:清除例子中的身份證、手機(jī)號、姓名等敏感數(shù)據(jù)

2.2 文檔類數(shù)據(jù)清洗(PDF/Word/制度類文檔)

我們用 PyMuPDF做結(jié)構(gòu)提取,然后執(zhí)行:

  1. 文檔拆分:按【段落】or【章節(jié)】邏輯切塊(避免語義中斷)
  2. 格式規(guī)整:去除頁眉頁腳、編號、目錄項(xiàng)(很多PDF頁碼與正文混在一起)
  3. 樣式清洗:刪除純格式字符(如空白頁、換行符堆積、連續(xù)空格)
  4. 自然段標(biāo)記:補(bǔ)足丟失的換行符,構(gòu)建每段的“標(biāo)題+正文”結(jié)構(gòu)
  5. 元數(shù)據(jù)補(bǔ)全:記錄來源、文檔版本、發(fā)布日期等信息,供追溯使用。

2.3 對話類數(shù)據(jù)清洗(客服IM、語音轉(zhuǎn)寫)

  • 去噪處理:清除“呃”、“·這個(gè)…”、“等一下”等口語停頓和冗余語句
  • 文本脫敏:正則過濾身份證號、卡號、手機(jī)號等隱私數(shù)據(jù)
  • 意圖提取:使用NLP工具(如spaCy、LTP)提取問題主干,如:“我轉(zhuǎn)不了賬”→【轉(zhuǎn)賬失敗】
  • 標(biāo)簽化對話:標(biāo)記用戶意圖(開戶/入金/轉(zhuǎn)戶/投訴),便于訓(xùn)練與召回
  • 去情緒干擾:過濾負(fù)面情緒詞,僅保留業(yè)務(wù)主句(如“這破系統(tǒng)怎么轉(zhuǎn)戶啊”→“如何轉(zhuǎn)戶”)。

2.4 網(wǎng)頁/App內(nèi)容清洗(HTML文本)

  • 標(biāo)簽解析:用BeautifulSoup/Playwright將HTMLDOM解析為純正文
  • 內(nèi)容分塊:識別【FAQ板塊】【說明板塊】【公告板塊】進(jìn)行獨(dú)立向量處理
  • 多語言處理:中英文混排場景,做分語種標(biāo)記,避免embedding誤差
  • 自動更新機(jī)制:使用diff機(jī)制檢測更新頁面,只重處理變更區(qū)域(減少計(jì)算量)

2.5 如何去重呢?

精確去重,使用的哈希(Hash),它可以快速判斷文本是否完全一致

對于語義去重,我們是利用語義向量(embedding)+相似度計(jì)算的方法

具體做法是把文本轉(zhuǎn)成高維向量,然后計(jì)算它們的余弦相似度。

當(dāng)相似度超過某個(gè)閾值(比如0.90.95)時(shí),我們就判定這些文本是語義重復(fù),從而進(jìn)行合并或過濾。

這種方法能有效識別“我想開戶”和“怎么開賬戶”這類表達(dá)不同但意思相同的文本,是智能客服和RAG系統(tǒng)中提升知識庫質(zhì)量的關(guān)鍵。

通俗來說:哈希就像是文本的“身份證號碼”,嚴(yán)格匹配;而語義向量是文本的“臉部識別”,看整體相似度。

比較相似度的幾種方法:

余弦相似度:含義:計(jì)算兩個(gè)向量之間的夾角余弦值

數(shù)學(xué)公式:cos(θ) = A·B / (‖A‖‖B‖)特點(diǎn):關(guān)注方向,不考慮向量長度

應(yīng)用場景:穩(wěn)定性好,語義類首選歐式距離:計(jì)算兩個(gè)向量之間的“空間直線距離”數(shù)學(xué)公式:√Σ (Ai-Bi)2特點(diǎn):關(guān)注絕對位置差值,受向量長度影響大

應(yīng)用場景:幾何直覺強(qiáng)(圖像/物理空間定位類問題常用)點(diǎn)積:向量內(nèi)積,考慮方向和長度數(shù)學(xué)公式:A·B = ΣAi*Bi特點(diǎn):值大代表方向一致且“強(qiáng)”,值小代表方向偏離

應(yīng)用場景:高效計(jì)算,與模型訓(xùn)練兼容性強(qiáng)。

第三階段:內(nèi)容切分(Chunking)

目標(biāo):構(gòu)造最小可復(fù)用、可引用的知識單元。

常見做法是 基于規(guī)則 +NLP模型

規(guī)則切分按字符數(shù)(比如 200–500 字一個(gè) chunk);

  • 按標(biāo)點(diǎn)符號(句號、分號、換行符);
  • 按結(jié)構(gòu)(標(biāo)題、列表、表格單元格)。

容易踩坑的點(diǎn):切分過大召回噪聲多、過小上下文斷裂。

關(guān)于不同的格式PDF、圖片、圖文混合、語音、視頻類如何切分,我做一個(gè)更詳細(xì)的介紹,歡迎大家繼續(xù)閱讀~

3.1 PDF 文件如何切分?

根據(jù) 文檔邏輯結(jié)構(gòu) + 可視排版信息 + 語義完整性 三個(gè)維度進(jìn)行切分。

整個(gè)流程可以分為以下幾步:

1)文檔解析

使用 PyMuPDF 解析文本和排版結(jié)構(gòu)(如字體大小、縮進(jìn)、標(biāo)題層級);

如果是掃描件PDF,則通過 OCR(如 PaddleOCR + 表格檢測)還原內(nèi)容。

2)結(jié)構(gòu)識別

通過正則表達(dá)式或標(biāo)題風(fēng)格識別“章節(jié)標(biāo)題”、“條款編號”(如 第 X 條、1.2.3)作為一級切分點(diǎn);

根據(jù)空行、縮進(jìn)、符號判斷自然段落邊界。

3)分塊切分(Chunking)

按照“一級標(biāo)題 + 段落”組合成一個(gè)chunk,保持上下文完整;

每個(gè)chunk控制在300-500 tokens,超長內(nèi)容采用滑窗 + overlap;

若chunk包含表格,則先展開表格結(jié)構(gòu)再切分。

4)元數(shù)據(jù)補(bǔ)全

為每個(gè)chunk添加文檔標(biāo)題、頁碼、版本、發(fā)布日期等元信息,方便后續(xù)追溯與響應(yīng)定位;

切分質(zhì)量驗(yàn)證

隨機(jī)抽樣chunk進(jìn)行 Embedding 相似度熱圖分析,檢查語義跳躍或中斷問題;

還會做人工 spot-check,確保每個(gè)chunk語義通順、結(jié)構(gòu)清晰。

3.2 圖片類如何切分?

對于圖片類數(shù)據(jù),我們通常分為兩步:先進(jìn)行內(nèi)容識別,再進(jìn)行語義切分。

1)圖片預(yù)處理

對圖片做去噪、去水印、裁剪等基礎(chǔ)圖像處理,保證后續(xù)識別質(zhì)量;

對文檔類圖片使用圖像增強(qiáng)技術(shù)提高OCR準(zhǔn)確率。

2)OCR 文字識別

使用高性能OCR工具識別圖片中的文字和表格;

同時(shí)提取文字位置、字體大小、布局信息,輔助后續(xù)切分。

3)圖像分塊與切分

根據(jù)OCR識別的文字位置,結(jié)合圖像的空間布局,做邏輯區(qū)域劃分;

對于圖表類圖片,我們會先做圖表結(jié)構(gòu)識別(圖例、坐標(biāo)軸、圖形元素),再拆分成對應(yīng)的文字描述+結(jié)構(gòu)塊。

4)語義級別切分

在文本提取后,按照自然語言的斷句和業(yè)務(wù)邏輯進(jìn)行語義切分,保證內(nèi)容的完整性和上下文連續(xù);

對圖表、合同頁等內(nèi)容,會做額外的語義補(bǔ)充說明,方便向量召回。

5)元信息補(bǔ)充

每個(gè)切塊會標(biāo)記圖片來源、頁碼、截圖時(shí)間等,便于回溯和查詢。

我們確保圖片類數(shù)據(jù)不僅能被“看懂”,而且可以高效地參與到知識檢索智能問答中。

3.3 音頻類如何切分?

這里主要用到ASR

ASR(自動語音識別) 是將語音信號轉(zhuǎn)化為對應(yīng)文本的技術(shù),是語音類數(shù)據(jù)接入自然語言處理系統(tǒng)的第一步。

在券商的智能客服項(xiàng)目中,ASR負(fù)責(zé):

  • 音頻轉(zhuǎn)文本:通過訓(xùn)練好的語音識別模型,將客戶語音、電話錄音、會議錄音轉(zhuǎn)換成文字,保持時(shí)間戳同步。
  • 說話人分離與標(biāo)注:在多說話人場景,做說話人分割,標(biāo)明發(fā)言人,提升文本結(jié)構(gòu)清晰度。
  • 識別準(zhǔn)確率優(yōu)化:通過領(lǐng)域適配、定制化詞表和語言模型微調(diào),提高專業(yè)術(shù)語和專有名詞的識別率。

為后續(xù)語義分析和RAG提供文本基礎(chǔ)。

識別文本成為后續(xù)語義切分、知識檢索的關(guān)鍵數(shù)據(jù)來源。

3.4 文?圖如何切分?

文圖混合數(shù)據(jù)(比如圖文并茂的公告、報(bào)告、投研資料)非常常見。

文圖混合數(shù)據(jù)的切分,核心是圖文切分的關(guān)鍵是確保文圖是對的上的,把“視覺信息”和“文本信息”統(tǒng)一到語義層面,保證切塊既有完整文字內(nèi)容,也能體現(xiàn)圖片或圖表的語義關(guān)聯(lián)。

1)圖文內(nèi)容提取

使用 OCR 工具(如 PaddleOCR、騰訊OCR)提取圖片中的文字和表格信息;

對文本塊做自然語言處理,做斷句和語義分析。

2)版面結(jié)構(gòu)分析

使用 OCR 工具(如 PaddleOCR、騰訊OCR)提取圖片中的文字和表格信息;

對文本塊做自然語言處理,做斷句和語義分析。

3)語義融合切分

結(jié)合圖像內(nèi)容分類(圖表、照片、流程圖等)和文本主題,按業(yè)務(wù)邏輯將圖文組合成語義完整的切塊;

對圖表類圖片做結(jié)構(gòu)化描述,融合成文字塊,確保圖文信息同步傳遞。

4)多模態(tài)向量生成

生成文本向量和圖像向量(使用CLIP、BLIP等多模態(tài)模型),輔助判斷切塊的語義邊界,避免切分?jǐn)嗔眩?/p>

5)元信息補(bǔ)全

每個(gè)切塊標(biāo)注來源頁碼、圖文位置、版本信息,方便后續(xù)追溯和精確響應(yīng)。

第四階段:向量化

向量化:將每個(gè)知識片段轉(zhuǎn)化為向量表示(比如Open AI的 Embedding 接口)

借助Embedding模型,將切分好的片段轉(zhuǎn)化成向量(數(shù)字組成的)。

市面上主流的文本Embedding模型大致可以分為三類:

1)通用Embedding(適用于多語種 / 多場景):

  • OpenAI text-embedding-ada-002(使用最廣泛,向量質(zhì)量好,長度支持長達(dá)8K token)
  • Cohere embed-v3, embed-english-light;
  • HuggingFace上的 sentence-transformers(如 all-MiniLM-L6-v2、mpnet-base-v2)。

2)中文專用Embedding(適用于中文客服 / 文檔場景):

  • BGE模型(如 bge-base-zh, bge-large-zh, bge-m3) → 性能好、適配中文
  • Langboat / E5系列
  • 訊飛、智譜等大廠提供的中文語義模型

3)多模態(tài)/多語言Embedding(適用于網(wǎng)頁混排、OCR文檔等):

  • GTE、LaBSE → 支持多語言對齊(適合中英混排)
  • CLIP / XLM-R 等 → 圖文場景或跨語種向量對齊

在我們?nèi)蘎AG項(xiàng)目中,我們做過Embedding模型的A/B對比,最后選擇了:

中文主向項(xiàng)目使用 bge-base-zh(百度開源),因?yàn)樗诮鹑谡Z義聚類和FAQ相似度匹配上的表現(xiàn)優(yōu)于OpenAI模型,且支持本地部署,方便做私有化;

涉及英文合規(guī)文檔,我們選用 text-embedding-ada-002 來構(gòu)建中英文混合知識庫;

部分內(nèi)容我們還試驗(yàn)過 bge-m3,它支持“多功能向量”(一次embedding可用于檢索、聚類、排序),效果也不錯(cuò)。

第五階段:數(shù)據(jù)入庫

完成向量化后,知識就變成了一塊塊可計(jì)算的“向量碎片”,但要讓它真正發(fā)揮作用,還需要進(jìn)入一個(gè) 高效、可控、可擴(kuò)展的數(shù)據(jù)庫 ——這就是數(shù)據(jù)入庫的環(huán)節(jié)。

在 RAG 項(xiàng)目中,數(shù)據(jù)入庫不僅僅是“存進(jìn)去”,而是要保證 檢索準(zhǔn)確、更新及時(shí)、調(diào)用高效、安全合規(guī)

5.1 選擇合適的存儲方式

常見的兩類存儲方案:

1)向量數(shù)據(jù)庫(如 Milvus、Faiss、Pinecone、Weaviate):

  • 擅長高維向量相似度檢索
  • 支持大規(guī)模知識片段的快速匹配

適合客服問答等“召回-排序-生成”的場景

2)關(guān)系型/文檔型數(shù)據(jù)庫(如 MySQL、Postgres、MongoDB):

  • 存儲結(jié)構(gòu)化信息(如費(fèi)率表、產(chǎn)品參數(shù))
  • 支持復(fù)雜的條件過濾與規(guī)則檢索

在金融業(yè)務(wù)中,通常與向量數(shù)據(jù)庫 混合使用(Hybrid Search)

5.2 知識元數(shù)據(jù)管理

除了向量本身,還要存儲豐富的 元數(shù)據(jù),方便檢索時(shí)做條件過濾。 常見元數(shù)據(jù)包括:

  • 來源(公告/手冊/系統(tǒng))
  • 適用范圍(A股/港股/美股)
  • 生效時(shí)間&版本號(解決知識時(shí)效性問題)
  • 風(fēng)險(xiǎn)標(biāo)簽(合規(guī)、敏感信息)

5.3 數(shù)據(jù)更新與增量入庫

知識庫是“活”的,不斷有新公告、新政策、新業(yè)務(wù)上線。

因此,入庫需要支持:

  • 增量更新:只更新變更部分,避免全量重建
  • 版本管理:保留歷史版本,支持“回溯查詢”
  • 自動化pipeline:每日定時(shí)抓取公告→切分→向量化→入庫,減少人工介入。

在金融場景下,這點(diǎn)尤為重要:比如 印花稅下調(diào)、交易規(guī)則修改、公司行動變更,知識庫必須在當(dāng)天完成更新,才能避免客服答錯(cuò)。

5.4 安全與合規(guī)

在券商業(yè)務(wù)里,數(shù)據(jù)入庫還必須滿足金融行業(yè)的合規(guī)要求:

  • 數(shù)據(jù)加密:存儲和傳輸必須符合監(jiān)管標(biāo)準(zhǔn)
  • 訪問控制:不同角色(客服、風(fēng)控、研發(fā))訪問權(quán)限不同
  • 審計(jì)追蹤:每條知識的入庫、調(diào)用、更新都有記錄,方便審計(jì)

數(shù)據(jù)入庫的目標(biāo)不是“存得下”,而是要做到:

  • 檢索精準(zhǔn)(用戶問什么就能找到對應(yīng)chunk)
  • 更新及時(shí)(業(yè)務(wù)變化第一時(shí)間反映)
  • 管理有序(元數(shù)據(jù)可控、合規(guī)可查)

只有把知識存得“對、快、穩(wěn)”,后續(xù)的檢索增強(qiáng)(RAG)才能真正發(fā)揮價(jià)值,讓智能客服既 答得準(zhǔn),又 答得放心。

還想補(bǔ)充一下,知識庫不是一次性工程,而是一條“持續(xù)迭代的生命線”。

隨著市場規(guī)則更新、業(yè)務(wù)流程調(diào)整,我們需要不斷優(yōu)化數(shù)據(jù)源、切分方式向量檢索策略,讓 AI 始終與最新業(yè)務(wù)保持同步。

如果說大模型是“通用大腦”,那么 RAG 就像是給大模型裝了一個(gè)知識外掛。原本只能靠“記憶”回答問題的語言模型,現(xiàn)在可以在回答前“查資料”,不僅提升了準(zhǔn)確率,也讓生成內(nèi)容更加貼合用戶的真實(shí)需求。

未來,誰能把知識庫建設(shè)好,誰就能率先跑通智能化的應(yīng)用閉環(huán)。

本文由 @梧桐AI 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載

題圖由作者提供

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!