FastAPI框架下集成智譜大模型的RAG流式響應服務框架

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92800.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于深度學習的胸部 X 光圖像肺炎分類系統(三)

目錄 二分類胸片判斷: 1. 數據加載時指定了兩類標簽 2. 損失函數用了二分類專用的 3. 輸出層只有 1 個神經元,用了sigmoid激活函數 4. 預測時用 0.5 作為分類閾值 二分類胸片判斷: import numpy as np import matplotlib.pyplot as plt f…

深入理解 BIO、NIO、AIO

目錄 一、同步與非同步 二、阻塞與非阻塞 三、BIO(Blocking I/O,阻塞I/O) 四、NIO(Non-blocking I/O,非阻塞I/O) 五、AIO(Asynchronous I/O,異步I/O) 同步阻塞&…

電腦無法識別固態硬盤怎么辦?

隨著固態硬盤(SSD)越來越普及,不少用戶在給電腦更換、加裝SSD時會遇到一個讓人頭大的問題——電腦識別不了固態硬盤。可能是開不了機,或者在“此電腦”中找不到硬盤,甚至連系統安裝界面都提示“找不到驅動器”。這時候…

Kingbasepostgis 安裝實踐

文章目錄前言一、安裝準備1.1 部署方案規劃1.2 SELINUX、防火墻狀態檢查1.3 操作系統時間檢查1.4 創建用戶及密碼1.5 目錄創建1.6 操作系統參數配置1.6.1 配置limits.conf文件二、安裝2.1 上傳安裝包以及license授權文件2.2 拷貝安裝文件2.3 命令行方式安裝2.3.1簡介2.3.2 許可…

移動端設備能部署的llm

mlc-llm 內置RedPajama hf示例模型 TheBloke/Mistral-7B-Instruct-v0.2-GGUF https://github.com/mlc-ai/mlc-llm/tree/main llama.cpp https://github.com/ggml-org/llama.cpp reference --- MLC-LLM:大模型如何部署到瀏覽器 / 手機?完整流程復現…

Ubuntu硬盤掛載

一、在 Ubuntu 中,你可以用以下命令快速查看 所有已連接但尚未掛載的硬盤和分區:lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID輸出中 MOUNTPOINT 為空的行,就是 未掛載的分區。sda ├─sda1 500M ext4 /boot ├─sda2 1.8T ntfs └─sda3 …

JavaScript -Socket5代理使用

axios 安裝兩個包 socks-proxy-agent,axios const { SocksProxyAgent } require(socks-proxy-agent); const axios require(axios);const socks5Axios axios.create();const socks5 () > {const socks5Agent new SocksProxyAgent("socks5://112.194.8…

[特殊字符] 從數據庫無法訪問到成功修復崩潰表:一次 MySQL 故障排查實錄

一次典型的 MySQL 故障排查與修復全過程,涵蓋登錄失敗、表崩潰、innodb_force_recovery 救援、壞表剔除與數據恢復等關鍵操作。一、問題背景某業務系統運行多年,數據庫使用的是 MySQL 8.0.18,近期在一次服務器重啟后,發現無法正常…

【Agent】API Reference Manual(API 參考手冊)

https://github.com/Intelligent-Internet/CommonGround/blob/main/docs/framework/03-api-reference.md 以下是這份 API Reference Manual(API 參考手冊) 的完整中文翻譯: API 參考手冊 版本:0.1 目錄 概覽 1.1 API 目的 1.2 通信協議與核心概念 HTTP API 2.1 POST /se…

LeetCode Hot 100 全排列

給定一個不含重復數字的數組 nums ,返回其 所有可能的全排列 。你可以 按任意順序 返回答案。示例 1:輸入:nums [1,2,3] 輸出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:輸入:nums [0,1]…

AI大模型如何有效識別和糾正數據中的偏見?

當下,人工智能大模型已成為推動各行業發展的關鍵力量,廣泛應用于自然語言處理、圖像識別、醫療診斷、金融風控等領域,為人們的生活和工作帶來了諸多便利。然而,隨著其應用的不斷深入,數據偏見問題逐漸浮出水面&#xf…

如何通過內網穿透,訪問公司內部服務器?

“凌晨2點,銷售總監王姐在機場候機時突然接到客戶電話——對方要求立即查看產品庫存數據。她慌忙翻出筆記本電腦,卻發現公司內網數據庫沒有公網IP,VPN連接又卡在驗證環節……這樣的場景,是否讓你想起某個手忙腳亂的時刻&#xff1…

12. isaacsim4.2教程-ROS 導航

1. Teleport 示例 ROS 服務的作用: 提供了一種同步、請求-響應的通信方式,用于執行那些需要即時獲取結果或狀態反饋的一次性操作或查詢。 Teleport 服務在 ROS 仿真(尤其是 Gazebo)和某些簡單機器人控制中扮演著瞬移機器人或對象…

DeepSpeed-FastGen:通過 MII 和 DeepSpeed-Inference 實現大語言模型的高吞吐文本生成

溫馨提示: 本篇文章已同步至"AI專題精講" DeepSpeed-FastGen:通過 MII 和 DeepSpeed-Inference 實現大語言模型的高吞吐文本生成 摘要 隨著大語言模型(LLM)被廣泛應用,其部署與擴展變得至關重要&#xff0…

操作系統:操作系統的結構(Structures of Operating System)

目錄 簡單結構(Simple Structure) 整體式結構(Monolithic Structure) 什么是 Kernel(內核)? 層次結構(Layered Structure) 微內核結構(Microkernel&#x…

Python柱狀圖

1.各國GDP柱狀圖2.各國GDP時間線柱狀圖

FastGPT:企業級智能問答系統,讓知識庫觸手可及

在信息爆炸的時代,企業如何高效管理和利用海量知識?傳統搜索和文檔庫已難以滿足需求。FastGPT正成為企業構建智能知識核心的首選。一、FastGPT:不止于問答的智能知識引擎FastGPT 顛覆了傳統知識庫的局限,其核心優勢在于&#xff1…

探索 MyBatis-Plus

引言在當今的 Java 開發領域,數據庫操作是一個至關重要的環節。MyBatis 作為一款優秀的持久層框架,已經被廣泛應用。而 MyBatis-Plus 則是在 MyBatis 基礎上進行增強的工具,它簡化了開發流程,提高了開發效率。本文將詳細介紹 MyBa…

Hive【安裝 01】hive-3.1.2版本安裝配置(含 mysql-connector-java-5.1.47.jar 網盤資源)

我使用的安裝文件是 apache-hive-3.1.2-bin.tar.gz ,以下內容均以此版本進行說明。 以下環境測試安裝成功: openEuler 22.03 (LTS-SP1)系統 MySQL-8.0.40 1.前置條件 MySQL數據庫 我安裝的是 mysql-5.7.28 版本的,安裝方法可參考《Linux環境…