LangChain構建大模型應用之RAG

在這里插入圖片描述
RAG(Retrieval-augmented Generation 檢索增強生成)是一種結合信息檢索與生成模型的技術,通過動態整合外部知識庫提升大模型輸出的準確性和時效性。其核心思想是在生成答案前,先檢索外部知識庫中的相關信息作為上下文依據,從而突破傳統生成模型的靜態知識邊界。
為什么我們要整合外部知識庫呢?
首先,大模型訓練通常需要耗費很多資源,幾百萬張貴的離譜的高性能GPU卡,巨量的電力,巨量的高質量訓練數據–意味著大量的硬盤,每次訓練大概要幾周到一兩個月,總之成本在百萬美元到上億美元,比如2023年,OpenAI的GPT-4模型和Google的Gemini Ultra模型的訓練成本更是分別高達約7800萬美元和近2億美元!2024年年底的重大新聞是我國的國產大模型DeepSeek v3 的發布,DeepSeek v3 真正令人印象深刻的是訓練成本。該模型在 2788000 個 H800 GPU 小時上進行訓練,估計成本為 5576000 美元。facebook (現在名為Meta )的Llama 3.1 405B 訓練了 30,840,000 個 GPU 小時——是 DeepSeek v3 所用時間的 11 倍,但基準測試結果略差。
大模型的知識庫在訓練的時候就已經固定了,而如果要更新知識庫那就得重新訓練模型,或者對大模型進行微調訓練。如果遇到用戶需要頻繁更新知識庫的場景,成本是無法接受的,于是就有了先檢索知識庫然后讓大模型處理后輸出的辦法。
其次,LLM在自然語言處理任務中可能提供??不準確??或??不充分答案??的局限性。我們在使用大模型時候經常會遇到幻覺問題,在某些需求領域這些幻覺是無法接受的,比如在醫院開藥的時候,藥名功效和用量是不能出錯的
在一些細分的專業領域,大模型的訓練數據是不足的,所以結合信息檢索與文本生成??:通過從龐大的外部知識庫中檢索相關信息,動態增強模型的生成能力,彌補LLM依賴靜態訓練數據的不足。
RAG還可以增強模型輸出的??準確性??和??信息完整性??,減少生成錯誤答案的概率。
下面作者將根據吳恩達《LangChain for LLM Application Development》 視頻課程來做一些課程筆記,這門課程非常不錯,很適合那些有編程基礎的讀者學習大模型應用開發。由于代碼里吳恩達用的是openAI 模型,收費高國內還不好用,langChain可以使用不同的模型,我將代碼換成阿里巴巴的千問大模型,方便大家使用。

L1 ,model prompt parser.
第一節,模型,提示詞和解析器

1.核心概念介紹

  • 模型 model:指語言模型,是大語言模型應用的基礎支撐。
  • 提示詞 prompt:即創建輸入的風格,其決定傳遞給模型的信息內容和形式。
  • 解析器 parser:負責將模型輸出解析為結構化格式,便于后續處理。

模型與提示的應用實踐
基礎示例:利用大模型,通過自定義助手函數調用 千問大模型 qwen-plus,如詢問 “一加一等于什么” 獲取回答。
使用千問大模型需要在阿里官網開通appkey具體如何使用和配置千問大模型 參考如下鏈接
https://blog.csdn.net/roccreed/article/details/141927269
(linux 和macos 配置環境變量方式和上面不一樣在這里插入代碼片)

import os
from openai import OpenAIclient = OpenAI(# 若沒有配置環境變量,請用百煉API Key將下行替換為:api_key="sk-xxx",api_key=os.getenv("DASHSCOPE_API_KEY"), base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
client
llm_model = "qwen-plus"def get_completion(prompt, model=llm_model):messages = [{"role": "user", "content": prompt}]response = client.chat.completions.create(model=model,messages=messages,temperature

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

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

相關文章

Ubuntu 下 Nginx 1.28.0 源碼編譯安裝與 systemd 管理全流程指南

一、環境與依賴準備 為確保編譯順利,我們首先更新系統并安裝必要的編譯工具和庫: sudo apt update sudo apt install -y build-essential \libpcre3 libpcre3-dev \zlib1g zlib1g-dev \libssl-dev \wgetbuild-essential:提供 gcc、make 等基…

第十二章-PHP文件上傳

第十二章-PHP文件上傳 一,文件上傳原理 一、HTTP協議與文件上傳 1. 請求體結構 當表單設置enctype"multipart/form-data"時,瀏覽器會將表單數據編碼為多部分(multipart)格式。 Boundary分隔符:隨機生成的…

CSS元素動畫篇:基于當前位置的變換動畫(三)

基于當前位置的變換動畫(三) 前言縮放效果類元素動畫脈沖動畫效果效果預覽代碼實現 橡皮筋動畫效果效果預覽代碼實現 果凍動畫效果效果預覽代碼實現 歡呼動畫效果效果預覽代碼實現 心跳動畫效果效果預覽代碼實現 結語 前言 CSS元素動畫一般分為兩種&…

Redis ssd是什么?Redis 內存空間優化的點都有哪些?embstr 和 row、intset、ziplist分別是什么?

Redis SSD 是什么? Redis SSD 通常指 Redis 使用 SSD(固態硬盤)作為持久化存儲介質的場景。雖然 Redis 是內存數據庫(數據主要駐留內存),但其持久化機制(如 RDB 快照和 AOF 日志)需…

【藍橋杯】 數字詩意

數字詩意 在詩人的眼中,數字是生活的韻律,也是詩意的表達。 小藍,當代頂級詩人與數學家,被賦予了”數學詩人”的美譽。他擅長將冰冷的數字與抽象的詩意相融合,并用優雅的文字將數學之美展現于紙上。 某日&#xff0…

DHCP 服務器運行流程圖

以常見的 DHCP v4 為例,其完整流程如下: 一、客戶端請求 IP 地址階段 DHCPDiscover:客戶端啟動后,會以廣播的形式發送 DHCPDiscover 報文,目的是在網絡中尋找可用的 DHCP 服務器。該報文中包含客戶端的 MAC 地址等信息,以便服務器能夠識別客戶端。DHCPOffer:網絡中的 D…

一種企業信息查詢系統設計和實現:xujian.tech/cs

一種企業信息查詢系統設計和實現:xujian.tech/cs 背景與定位 企業在對外合作、風控審查或市場調研時,常需快速獲取公開的工商信息。本文介紹一個企業信息搜索引擎,面向普通用戶與開發者,幫助快速定位企業名稱、統一社會信用代碼…

前端面試高頻算法

前端面試高頻算法 1 排序算法;1.1 如何分析一個排序算法1.1.1 執行效率3.1.2 內存消耗1.1.3 穩定性 1.2 冒泡排序(Bubble Sort)1.3 插入排序(Insertion Sort)1.4 選擇排序(Selection Sort)1.5 歸…

C++初階-模板初階

目錄 1.泛型編程 2.函數模板 2.1函數模板概念 2.2實現函數模板 2.3模板的原理 2.4函數模板的實例化 2.4.1隱式實例化 2.4.2顯式初始化 2.5模板參數的匹配原則 3.類模板 3.1類模板定義格式 3.2類模板的實例化 4.總結 1.泛型編程 對廣泛的類型法寫代碼,我…

「Mac暢玩AIGC與多模態02」部署篇01 - 在 Mac 上部署 Ollama + Open WebUI

一、概述 本篇介紹如何在 macOS 環境下本地部署 Ollama 推理服務,并通過 Open WebUI 實現可視化交互界面。該流程無需 CUDA 或專用驅動,適用于 M 系列或 Intel 芯片的 Mac,便于快速測試本地大語言模型能力。 二、部署流程 1. 環境準備 安裝 Homebrew(如尚未安裝):/bin…

JavaScript 中 undefined 和 not defined 的區別

在 JavaScript 的調試過程中,你是否經常看到 undefined 卻不知其來源?是否曾被 ReferenceError: xxx is not defined 的錯誤提示困擾?這兩個看似相似的概念,實際上是 JavaScript 類型系統中最重要的分水嶺。本文將帶你撥開迷霧&am…

django admin AttributeError: ‘UserResorce‘ object has no attribute ‘ID‘

在 Django 中遇到 AttributeError: ‘UserResource’ object has no attribute ‘ID’ 這類錯誤通常是因為你在代碼中嘗試訪問一個不存在的屬性。在你的例子中,錯誤提示表明 UserResource 類中沒有名為 ID 的屬性。這可能是由以下幾個原因造成的: 拼寫錯…

對鴻蒙 Next 系統“成熟論”的深度剖析-優雅草卓伊凡

對鴻蒙 Next 系統“成熟論”的深度剖析-優雅草卓伊凡 在科技飛速發展的當下,鴻蒙 Next 系統無疑成為了眾多科技愛好者與行業人士關注的焦點。今日,卓伊凡便收到這樣一個饒有趣味的問題:鴻蒙 Next 系統究竟需要多長時間才能完全成熟&#xff…

快速上手GO的net/http包,個人學習筆記

更多個人筆記:(僅供參考,非盈利) gitee: https://gitee.com/harryhack/it_note github: https://github.com/ZHLOVEYY/IT_note 針對GO中net/http包的學習筆記 基礎快速了解 創建簡單的GOHTTP服務 func …

AI-Browser適用于 ChatGPT、Gemini、Claude、DeepSeek、Grok的客戶端開源應用程序,集成了 Monaco 編輯器。

一、軟件介紹 文末提供程序和源碼下載學習 AI-Browser適用于 ChatGPT、Gemini、Claude、DeepSeek、Grok、Felo、Cody、JENOVA、Phind、Perplexity、Genspark 和 Google AI Studio 的客戶端應用程序,集成了 Monaco 編輯器。使用 Electron 構建的強大桌面應用程序&a…

Dify框架面試內容整理-Dify如何處理知識庫的集成?

Dify 在知識庫集成方面采用了“檢索增強生成(RAG)”的技術架構,核心實現思路如下: 一、知識庫集成的整體流程 Dify處理知識庫集成通常包括以下關鍵步驟: 文檔上傳↓

Laravel 模型使用全局作用域和局部作用域

一. 需要解決什么問題 最近Laravel 項目中遇到一個需求,我有一個客戶表,每個員工都有自己的客戶,但是自己只能看自己的客戶。 項目中,有很多功能需要查詢客戶列表,客戶詳情,查詢客戶入口很多,…

【Nova UI】十二、打造組件庫之按鈕組件(上):邁向功能構建的關鍵一步

序言 在上一篇文章中,我們深入探索了 icon 組件從測試到全局注冊的全過程🎯,成功為其在項目中穩定運行筑牢了根基。此刻,組件庫的建設之旅仍在繼續,我們將目光聚焦于另一個關鍵組件 —— 按鈕組件。按鈕作為用戶與界面…

鴻蒙OSS文件(視頻/圖片)壓縮上傳組件-能夠增刪改查

一、鴻蒙實現處理-壓縮上傳整體代碼處理邏輯 轉沙箱壓縮獲取憑證并上傳文件 文件準備(拿到文件流)獲取上傳憑證(調接口1拿到file_name和upload_url)執行文件上傳(向階段2拿到的upload_url上傳文件)更新列表…

河道流量監測,雷達流量計賦能水安全智慧守護

在蜿蜒的河道之上,水流的脈搏始終與人類文明的興衰緊密相連。從農田灌溉的水量調配到城市防洪的精準預警,從生態保護的水質溯源到水資源管理的決策,河道流量監測如同大地的 “血管檢測”,是守護水安全的第一道防線。傳統監測手段在…