RAG(檢索增強生成)是結合檢索與生成式 AI 的技術框架。核心邏輯是先從外部知識庫精準檢索相關信息,再將其作為上下文輸入大模型生成回答。技術上依賴檢索引擎(如向量數據庫、BM25)、大語言模型(如 GPT、LLaMA)及數據預處理技術。通過檢索增強,解決大模型知識滯后、幻覺問題,提升回答準確性。應用廣泛,涵蓋智能客服、醫療問答、法律檢索、教育輔導等場景,能基于特定領域知識提供精準、可控的生成內容。
wow-RAG 是 Datawhale 推出的 RAG 技術實踐項目,網址:datawhalechina/wow-rag: A simple and trans-platform rag framework and tutorial ? ?https://github.com/datawhalechina/wow-rag
環境配置與模型初始化
import os
from dotenv import load_dotenv# 加載環境變量
load_dotenv()
# 從環境變量中讀取api_key
api_key = os.getenv('ZHIPU_API_KEY')
base_url = "https://open.bigmodel.cn/api/paas/v4/"
chat_model = "glm-4-flash"
emb_model = "embedding-2"# 配置對話模型
from llama_index.llms.zhipuai import ZhipuAI
llm = ZhipuAI(api_key = api_key,model = chat_model,
)# 配置嵌入模型
from llama_index.embeddings.zhipuai import ZhipuAIEmbedding
embedding = ZhipuAIEmbedding(api_key = api_key,model = emb_model,
)
emb = embedding.get_text_embedding("你好呀呀")
- 使用 dotenv 庫從.env 文件加載環境變量,安全管理 API 密鑰
- 初始化智譜 AI 的聊天模型 (GLM-4-Flash) 和嵌入模型 (embedding-2)
- 測試嵌入模型的功能,生成文本 "你好呀呀" 的向量表示
文檔處理與索引構建
# 從指定文件讀取,輸入為List
from llama_index.core import SimpleDirectoryReader,Document
documents = SimpleDirectoryReader(input_files=['./docs/大模型推理.txt']).load_data()
# 構建向量索引
from llama_index.core import VectorStoreIndex
#index = VectorStoreIndex.from_documents(documents,embed_model=embedding)
# 想要看到進度條的話,加一個參數 show_progress=True
index = VectorStoreIndex.from_documents(documents,embed_model=embedding,show_progress=True)
流式查詢引擎
response_stream = query_engine.query("請寫一篇1000字的文章論述大模型推理的技術細節")
for text in response_stream.response_gen:print(text,end="")
構建查詢引擎后發起關于 “大模型推理技術細節” 的查詢,系統會先將問題向量與索引中的文檔向量比對,找到最相關的參考內容,再結合這些信息讓大模型生成回答。通過流式響應(response_stream),模型生成的內容會按片段實時返回,循環打印每個片段即可實現 “邊生成邊顯示” 的效果
輸出:
大模型推理:技術細節解析隨著人工智能技術的飛速發展,大模型(Large Language Model)在自然語言處理領域取得了顯著的成果。大模型能夠處理復雜的語言問題,為用戶提供了便捷、智能的服務。本文將從技術細節的角度,對大模型推理進行探討。一、大模型推理概述大模型推理是指在大規模語言模型的基礎上,利用模型對特定語言任務進行預測和決策的過程。在大模型推理過程中,需要關注以下幾個關鍵技術細節:1. 推理過程大模型推理過程主要包括以下步驟:(1)輸入處理:將輸入文本轉化為模型可理解的格式,如分詞、詞性標注、句法分析等。(2)特征提取:通過特征提取技術,將輸入文本中的有用信息提取出來,供模型進行推理。(3)模型推理:將提取的特征輸入到訓練好的大模型中,得到預測結果。(4)結果輸出:將模型預測結果輸出給用戶。2. 推理速度大模型推理速度是影響實際應用效果的重要因素。為了提高推理速度,可以采用以下技術:(1)模型壓縮:通過模型壓縮技術,降低模型參數量和計算復雜度,從而加快推理速度。(2)推理加速:利用硬件加速器(如GPU、TPU)進行推理計算,提高推理速度。(3)量化技術:對模型參數進行量化處理,降低數據精度,從而加快推理速度。二、大模型推理中的關鍵技術1. 特征提取特征提取是影響大模型推理效果的關鍵環節。以下是一些常見的特征提取技術:(1)詞袋模型:將文本分解為單詞或字符,統計其在文檔中的出現頻率,構建詞袋模型。(2)TF-IDF:結合詞袋模型和逆文檔頻率,對特征進行加權,提高特征的重要性。(3)Word2Vec:將文本中的單詞映射為固定維度的向量,保留語義信息。2. 思維鏈(CoT)思維鏈是一種用于指導大模型推理的技術,它將問題拆解為一系列更小的步驟。以下是思維鏈的幾個關鍵點:(1)將問題分解:將復雜問題分解為一系列簡單、可處理的問題。(2)推理步驟:在思維鏈中,每一步都對應一個推理步驟,逐步解決問題。(3)結構化推理:將推理過程結構化,使大模型能夠更好地理解問題和答案。3. 測試時計算擴展測試時計算擴展是指在推理階段增加計算量,以提高模型性能。以下是測試時計算擴展的關鍵技術:(1)長度擴展:增加推理過程中生成的中間結果,提高模型推理能力。(2)樣本擴展:增加測試數據量,使模型在更多場景下具有更好的性能。(3)模型擴展:通過改進模型結構或參數,提高模型在特定任務上的表現。三、案例分析:DeepSeek-R1DeepSeek-R1是一種基于思維鏈的推理型大模型。以下是其技術細節:1. 數據集:DeepSeek-R1使用了80萬個高質量數據樣本,包括60萬個推理示例和20萬個非推理示例。2. 模型訓練:學生模型通過對比自身輸出和教師模型輸出,學習DeepSeek-R1的推理方式。3. 推理結果:DeepSeek-R1在多個推理任務上取得了優異的成績,驗證了其推理能力。總之,大模型推理技術在自然語言處理領域具有廣泛的應用前景。通過對推理過程、特征提取、思維鏈和測試時計算擴展等關鍵技術的深入研究,可以有效提高大模型的推理性能,為用戶帶來更優質的體驗。
FastAPI 流式 API 服務
import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import StreamingResponse
import threadingapp = FastAPI()
app.add_middleware(CORSMiddleware,allow_origins=["*"])# 新增服務器控制相關代碼
_server_thread = Nonedef run_server():config = uvicorn.Config(app, host='0.0.0.0', port=5000)server = uvicorn.Server(config)server.run()def start_server():"""啟動后臺服務"""global _server_threadif not _server_thread or not _server_thread.is_alive():_server_thread = threading.Thread(target=run_server, daemon=True)_server_thread.start()print("服務已啟動:http://localhost:5000/stream_chat")@app.get('/stream_chat')
async def stream_chat(param:str = "你好"):async def generate(): response_stream = query_engine.query(param)for text in response_stream.response_gen:yield textreturn StreamingResponse(generate(), media_type='text/event-stream')# 在Notebook中直接調用啟動服務
start_server()
uvicorn作為 ASGI 服務器用于運行 FastAPI 應用,FastAPI構建 Web 服務,CORSMiddleware處理跨域請求,StreamingResponse支持流式響應。
通過 GET 請求接收用戶查詢參數param,利用異步生成器generate從query_engine獲取流式響應,并通過StreamingResponse以text/event-stream格式向客戶端推送文本片段,實現實時聊天效果。
# 調用服務
import requestsdef test_stream_chat(question="你好"):url = "http://localhost:5000/stream_chat"params = {"param": question}with requests.get(url, params=params, stream=True) as response:for chunk in response.iter_content(decode_unicode=True):if chunk:print(chunk, end="", flush=True)# 調用示例
test_stream_chat("大模型推理就業前景如何?")
輸出:
大模型推理作為人工智能領域的一個重要分支,其就業前景相當廣闊。隨著人工智能技術的不斷發展,對于具備大模型推理能力的人才需求日益增長。以下是大模型推理就業前景的一些方面:1. **技術需求增加**:隨著企業對智能化的需求提升,大模型推理技術能夠幫助解決復雜問題,提高工作效率,因此相關技術人才需求旺盛。2. **多行業應用**:大模型推理在金融、醫療、教育、交通等多個行業中都有廣泛應用,這為從業者提供了多樣化的就業選擇。3. **研究與發展崗位**:在高校、研究機構和企業中,都需要從事大模型推理相關的研究與開發工作,這些崗位對人才的要求較高,但同時也提供了較高的薪資和職業發展空間。4. **產品與解決方案**:隨著大模型推理技術的商業化,市場上對于能夠將技術轉化為實際產品或解決方案的人才需求也在增加。5. **數據與算法工程師**:大模型推理依賴于高質量的數據和高效的算法,因此數據工程師和算法工程師在這一領域具有很高的就業前景。6. **教育與培訓**:隨著人工智能教育的普及,對于能夠教授大模型推理相關課程的專業人才也有較大需求。綜上所述,大模型推理領域的就業前景是積極的,但同時也需要從業者不斷學習新知識,提升自己的技術能力和解決問題的能力。
參考文章
https://github.com/datawhalechina/wow-raghttps://github.com/datawhalechina/wow-rag