大模型應用初學指南

????????隨著人工智能技術的快速發展,檢索增強生成(RAG)作為一種結合檢索與生成的創新技術,正在重新定義信息檢索的方式,RAG 的核心原理及其在實際應用中的挑戰與解決方案,通用大模型在知識局限性、幻覺問題和數據安全性等方面的不足,隨后詳細介紹了 RAG 通過 “檢索 + 生成” 模式如何有效解決這些問題,RAG 利用向量數據庫高效存儲與檢索目標知識,并結合大模型生成合理答案,RAG 的關鍵技術進行了全面解析,包括文本清洗、文本切塊、向量嵌入、召回優化及提示詞工程等環節,針對 RAG 系統的召回效果與模型回答質量,本文提出了多種評估方法,為實際開發提供了重要參考

一、人工智能術語或書籍

LLM,chatGPT,RAG,Agent 等等的術語,AI:Artificial Intelligence 的縮寫,指 “人工智能”,AIGC:AI Generated Content 的縮寫,意指由人工智能生成的內容。在算法和數碼內容制作領域,AIGC 涉及使用人工智能技術生成各種形式的內容,比如文字、圖像、視頻、音樂,

Transformer:一種用于自然語言處理(NLP)任務的深度學習模型

BERT:Bidirectional Encoder Representations from Transformers 的縮寫,是一種自然語言處理(NLP)的預訓練模型

PEFT:Parameter-Efficient Fine-Tuning 的縮寫,中文高效參數微調

LoRA:Low-Rank Adaptation 的縮寫,一種用于微調大規模語言模型的一種技術

LLM:Large Language Model 的縮寫,指 “大語言模型”

RAG:Retrieval-Augmented Generation 的縮寫,指 “檢索增強生成”,這是一個跨越檢索和生成任務的框架,通過先從數據庫或文檔集合中檢索到相關信息

Agent:中文叫智能體,一個能獨立執行任務和做出決策的實體,在人工智能中

GPT:Generative Pre-trained Transformer 的縮寫,指 “生成式預訓練變換器”

LLaMA:Large Language Model Meta AI 的縮寫,是由 Meta 開發的一系列大型自然語言處理模型

chatGPT:由 OpenAI 開發的一種基于 GPT(生成預訓練變換模型)架構的人工智能聊天機器人

Prompt:指的是提供給模型的一段初始文本,用于引導模型生成后續的內容

Embedding:中文叫嵌入,是一種將高維數據映射到低維空間的技術,但仍盡可能保留原數據的特征和結構。嵌入技術通常用于處理和表示復雜的數據如文本、圖像、音樂以及其他高維度的數據類型

二、向量數據庫

非結構化數據呈現出高速增長的趨勢。圖片、音頻、視頻等非結構化數據的存儲和檢索需求也變得越來越多

IDC DataSphere 數據顯示?IDC FutureScape:2024年中國數據和分析市場十大預測

????????為了更有效地管理非結構化數據,常見的做法是將其轉換為向量表示,并存儲在向量數據庫中。這種轉換過程通常被稱為向量化或嵌入(Embedding)。通過將文本、圖像或其他非結構化數據映射到高維向量空間,我們可以捕捉數據的語義特征和潛在關系。向量數據庫通過在「向量表示」上構建索引,實現快速的相似性搜索。

????????向量數據庫是用于存儲和查詢高維向量數據的數據庫,通常在搜索、推薦系統、圖像識別、自然語言處理等領域中廣泛使用。

常用的向量數據庫

1. Faiss (Facebook AI Similarity Search):

  • 開發者:Facebook AI Research

  • 特點:高效的相似性搜索和密集向量聚類,支持 CPU 和 GPU 加速。

  • 適用場景:圖像相似性搜索、大規模推薦系統等。

2. Annoy (Approximate Nearest Neighbors Oh Yeah):

  • 開發者:Spotify

  • 特點:基于內存的高效最近鄰搜索,使用構建的可持久化樹數據結構。

  • 適用場景:音樂推薦、快速搜索等。

3. HNSW (Hierarchical Navigable Small World):

  • 開發者:Yury Malkov(和其他社區貢獻者)

  • 特點:小世界圖算法,高效的近似最近鄰搜索,支持動態插入和刪除。

  • 適用場景:實時搜索和推薦系統。

4. Elasticsearch with k-NN Plugin:

  • 開發者:Elastic

  • 特點:在 Elasticsearch 之上添加 k-NN 搜索功能,結合全文搜索和向量搜索。

  • 適用場景:綜合搜索引擎,需要同時支持文本和向量查詢的場景。

5. Milvus:

  • 開發者:ZILLIZ

  • 特點:分布式、高性能向量數據庫,支持大規模數據管理和檢索。

  • 適用場景:圖像、視頻、文本等大規模向量數據的存儲和檢索。

6. Pinecone:

  • 開發者:Pinecone

  • 特點:專用于機器學習應用程序的向量數據庫,易于集成和擴展。

  • 適用場景:個性化推薦、語義搜索、實時機器學習應用等。

7. Weaviate:

  • 開發者:SeMI Technologies

  • 特點:開源的向量搜索引擎,支持上下文感知的語義搜索,擴展性強。

  • 適用場景:知識圖譜構建、語義搜索、推薦系統。

8. Vectara:

  • 開發者:Vectara, Inc.

  • 特點:基于向量的全托管搜索服務,專注于語義搜索和相關性。

  • 適用場景:搜索引擎優化、自然語言處理應用。

????????在向量數據的存儲成本、召回率等方面都面臨較大的挑戰。隨著非結構化數據的進一步增長,成本和召回率的挑戰會變得困難

1. 存儲和索引優化
  • 量化技術:使用向量量化(Vector Quantization, VQ)技術,例如產品量化(Product Quantization, PQ)或乘積量化(Additive Quantization, AQ),可以在保證精度的同時大幅度減少存儲和計算資源。

  • 壓縮向量:采用哈希方法如局部敏感哈希(Locality-Sensitive Hashing, LSH)來減少存儲消耗,并加速相似性搜索。

  • 分布式存儲:使用分布式文件系統和數據庫(如 Apache Hadoop、Cassandra)可以優化存儲和查詢的大規模向量數據。

  • 存儲器級別調整:利用固態硬盤(SSD)甚至是新興的持久化內存(Persistent Memory, PMEM)來在內存和磁盤之間找到平衡,優化存儲成本。

2. 召回率優化
  • 混合搜索技術:結合粗粒度和細粒度的索引,例如先使用粗濾技術快速縮小搜索范圍,然后進行精確查找。

  • 近似最近鄰查找(ANN)算法:如 HNSW(Hierarchical Navigable Small World)圖、FAISS 中使用的 ANN 算法可以在保證高召回率的基礎上優化搜索速度。

  • 多層次檢索:分層結構的檢索方法,從粗到細進行,逐步提高召回率和精度。

4. 專用硬件加速
  • GPU 和 TPU:使用專門的硬件加速器,如 GPU(圖形處理單元)或 TPU(張量處理單元),以加速向量計算和相似性搜索。

  • FPGA:使用可編程門陣列(FPGA)為特定向量計算任務定制硬件加速,以提高效率和降低延遲。

5. 持續優化和更新模型
  • 動態索引更新:隨著非結構化數據的增長和變化,保持索引和向量表示的及時性,使用在線或增量更新的方法管理索引。

  • 自適應模型:利用機器學習和深度學習模型不斷優化向量表示的嵌入質量,使得向量檢索更加精準有效

6. 先進的嵌入技術
  • 預訓練模型:使用當前的預訓練語言模型(如 BERT、GPT-3)進行上下文嵌入,捕捉復雜的語義信息。

  • 多模態嵌入:對于不同類型的數據(如文本、圖像、視頻),使用多模態嵌入模型來統一表示和處理,提升檢索性能。

  • AutoGen 框架

AutoGen 是一個能讓多個 Agent 進行溝通協作的 Python 開源框架。核心解決兩個問題:

第一個問題:如何設計用戶可定制、可重用的、能夠互相協作的 Agent。AutoGen 是要設計為一個通用的能夠適用多種場景的框架,在 AutoGen 的官網 Examples 中給出了在多種場景下能夠解決問題的例子,此外在 git 倉庫中的 notbook 目錄中有 50 + 例子。有解決數學問題場景、有通過開發代碼進行分析的場景(比如上一章節的列子)、還有通過五六個 Agent 討論分析開放問題的場景。所以 Agent 的擴展能力是需要重要考慮問題,AutoGen 中通過支持多種外部工具、不同 LLM、支持 human in the loop 的方式,Agent 之間能夠通信的方式來解決擴展問題。

第二個問題:如何讓 Agent 能靈活支持不同模式的會話方式。不同的場景,根據復雜度、問題的類型需要不同的 Agent 會話模式。這里的 “模式” 包括了單輪對話 or 多輪對話、自動選擇每輪的 speaker or 通過規則選擇、通過自然語言控制邏輯 or 通過代碼控制,此外設計需要考慮多個 Agent 之間如何靈活 “組網”,比如三人一組,每組一個 leader,組內互相通信,leader 能夠通信的方式。

為了解決這兩個問題,AutoGen 抽象了一些基礎概念。

Conversable Agents

旨在用于在復雜任務中進行多輪交互。這些智能體能夠理解和處理用戶輸入,維護上下文,并生成合適的響應。Conversable Agents 通常集成了自然語言處理技術,包括自然語言理解(NLU)和自然語言生成(NLG),以提高對話的流暢性和智能性

Conversation Programming

旨在通過自然語言與人工智能系統進行交互,來實現編程和任務自動化。這個概念試圖簡化編程過程,使得用戶無需深厚的編程背景也能使用自然語言描述需求,進而生成可執行的代碼或自動化腳本。

MetaGPT 的主要工作流程和特點包括:

  • 角色定義(Role Definitions):MetaGPT 通過定義不同的角色(如產品經理、架構師、項目經理等)來封裝每個角色的特定技能和業務流程。這些角色類繼承自一個基礎角色類,具有名稱、簡介、目標、約束和描述等關鍵屬性。角色定義幫助 LLM 生成符合特定角色要求的行為。

  • 任務分解(Task Decomposition):MetaGPT 將復雜的軟件開發任務分解成更小、更易于管理的部分,然后將這些子任務分配給合適的智能體執行。

  • 流程標準化(Process Standardization):MetaGPT 定義了一系列標準化操作,每個操作都具有前綴、LLM 代理、標準化輸出模式、執行內容、重試機制等屬性。這些標準化操作確保了智能體之間的協作是一致的,輸出的結果也是結構化的。

  • 知識共享(Knowledge Sharing):MetaGPT 通過環境日志復制消息,智能體可以根據自己的角色訂閱感興趣的消息類型。這種方式使智能體可以主動獲取相關信息,而不是被動地通過對話獲取。

  • 端到端開發(End-to-End Development):從產品需求到技術設計,再到具體編碼,MetaGPT 通過多智能體的協作可以完成整個軟件開發生命周期。

RAG 的工作流程涉及 3 個主要階段:數據準備、數據召回和答案生成。數據準備階段包括識別數據源、從數據源提取數據、清洗數據并將其存儲在數據庫中。數據召回階段包括根據用戶輸入的查詢條件從數據庫中檢索相關數據。答案生成階段則是利用檢索到的數據和用戶輸入的查詢條件生成輸出結果。輸出質量的高低取決于數據質量和檢索策略。

  • 數據準備

根據 LLM 需要處理的任務類型,數據準備通常包括識別數據源、從數據源中提取數據、清洗數據并將其存儲在數據庫中等環節。用于存儲數據的數據庫類型和準備數據的步驟可能會因應用場景和檢索方法的不同而有所變化。例如,如果使用像 Faiss 這樣的向量存儲庫,需要為數據創建嵌入并將其存儲在向量存儲庫中;如果使用像 Elasticsearch 這樣的搜索引擎,需要將數據索引到搜索引擎中;如果使用像 Neo4j 這樣的圖數據庫,需要為數據創建節點和邊,并將它們存儲到圖數據庫中

RAG 的優點。

高質量的答案生成,降低答案生成的幻覺

RAG 的一個優點是它能夠生成高質量的回答。因為在生成過程中,檢索器可以從大量文檔中檢索問題相關的信息,然后基于這些信息生成回答。這使得整個系統能夠充分利用現有知識生成更準確、更具深度的回答,也意味著模型出現幻覺答案的概率更小。

五、大模型框架

LangChain 是一個開源的應用開發框架,目前支持 Python 和 TypeScript 兩種編程語言。它賦予 LLM 兩大核心能力:數據感知,將語言模型與其他數據源相連接;代理能力,允許語言模型與其環境互動。

來源

  • 《大模型 RAG 實戰:RAG 原理、應用與系統構建》:https://m.douban.com/book/subject/37104428/

  • 《從 AIGC 典型客戶實踐揭秘云原生向量數據庫內核設計與智能創新》:?https://www.infoq.cn/article/5frz8imatl9yevqjofct

  • AutoGen Blog 官網:?https://microsoft.github.io/autogen/0.2/blog/

  • 《AI Agent【項目實戰】:MetaGPT 遇上元編程,重塑復雜多智能體協作的邊界》:?https://xie.infoq.cn/article/a9977d01e3131bf951ba28e72

?

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

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

相關文章

docker-compose部署prometheus+grafana+node_exporter+alertmanager規則+郵件告警

目錄 一.docker-compose文件 二.配置文件 三.文件層級關系,docker-compose和配置文件位于同級目錄 四.node_exporter頁面json文件 五.效果展示 prometheusalertmanager郵件告警 grafana面板效果 六.涉及離線包 一.docker-compose文件 [rootsulibao prometh…

AI設計再現新引擎,科技創新又添新動能——廣東省首家行業AI設計工程中心獲批成立

近期,大捷智能科技(廣東)有限公司(以下簡稱“大捷智能”)憑借其在人工智能與智能制造領域的突出研發實力與創新科技成果,由廣東省科技廳批準設立“廣東省模具智能設計與智能制造工程技術研究中心”。 廣東省…

【MongoDB + 向量搜索引擎】MongoDB Atlas 向量搜索 提供全托管解決方案

在代碼審計項目中,MongoDB可以用于存儲元數據和部分結構化信息,但要高效處理向量相似性搜索,需結合其他工具。以下是具體分析: 1. MongoDB 的適用場景 元數據存儲: 存儲代碼片段的文件路徑、行號、語言類型等結構化信…

基于ANSYS 概率設計和APDL編程的結構可靠性設計分析

01 可靠度基本理論 結構的極限狀態:整個結構的一部分超過某一特定狀態就不能滿足設計規定的某一功能要求。結構的極限狀態實質上是結構工作狀態的一個閥值,如果工作狀態超過這一閥值,則結構處于不安全、不耐久或不適用的狀態;若工…

CyclicBarrier、Semaphore、CountDownLatch的區別,適用場景

CyclicBarrier、Semaphore 和 CountDownLatch 是 Java 并發包中用于線程協作的工具類,它們雖然都與線程同步相關,但設計目的和使用場景有顯著差異。以下是它們的核心區別和典型應用場景: 1. CountDownLatch 核心機制 一次性計數器&#xf…

新能源汽車測試中的信號調理模塊:從原理到實戰應用

摘要 信號調理模塊(Signal Conditioning Module, SCM)是新能源汽車(NEV)測試系統中的關鍵環節,直接影響數據采集的精度與可靠性。本文面向HIL測試工程師、電機測試工程師及整車動力經濟性測試工程師,系統性…

Qt5 Mac系統檢查休眠

在開發跨平臺應用程序時,有時候我們需要檢測系統的狀態,比如是否處于休眠或喚醒狀態。Qt是一個強大的跨平臺應用開發框架,支持多種操作系統,包括Windows、Linux、macOS等。在這個場景下,我們關注的是如何在Qt5.10中檢測到系統是否休眠以及在Mac上實現這一功能。本文將深入…

RabbitMQ簡單介紹和安裝

RabbitMQ簡單介紹 一.RabbitMQ介紹二.RabbitMQ的作用1.異步解耦2.流量削峰3.消息分發4.延遲通知 三.RabbitMQ安裝(Ubuntu)1.先安裝Erlang2.安裝RabbitMQ3.安裝RabbitMQ的管理界面4.創建虛擬機5.端口號信息 四.工作原理圖 一.RabbitMQ介紹 RabbitMQ 是一款…

匯編學習之《call, return指令》

call 指令 call 指令就是調用函數的執行,不過它也是幾個指令的組合 第一步通過jmp 函數地址的方式先跳轉到函數 第二步通過push 指令將函數地址指令額下一行的指令的地址壓入棧中。 我們來驗證下 首先打開OllyDbg,導入你的程序,找到一個call 函數&…

接口自動化學習三:參數化parameterize

使用parametrize之前: def add(x,y):return xy class TestAddFunction(object):def test01(self):resadd(2,4)assert 6resdef test02(self):resadd(4,6)assert 10resparametrize參數化之后: import pytest def add(x,y):return xydata[(10,20,30),(200…

全面解析 Mybatis 與 Mybatis-Plus:深入原理、實踐案例與高級特性對比

全面解析 Mybatis 與 Mybatis-Plus:深入原理、實踐案例與高級特性對比 🚀 前言一、基礎介紹 ?1. Mybatis 簡介 🔍2. Mybatis-Plus 簡介 ? 二、核心區別與高級特性對比 🔎1. 開發模式與配置管理2. 功能豐富度與擴展性3. 自動填充…

【區塊鏈安全 | 第十九篇】類型之映射類型

文章目錄 映射類型可迭代映射 映射類型 映射類型使用語法 mapping(KeyType KeyName? > ValueType ValueName?),映射類型的變量聲明使用語法 mapping(KeyType KeyName? > ValueType ValueName?) VariableName。 KeyType 可以是任何內置值類型、bytes、st…

動態循環表單+動態判斷表單類型+動態判斷表單是否必填方法

頁面效果: 接口請求到的數據格式: list: [{demandType: "設備輔助功能要求",demandSettingList: [{id: "1907384788664963074",name: "測試表單",fieldType: 0,contentValue: "",vaildStatus: 0, // 0 非必填&a…

藍橋杯DFS算法題(java)

最大連通 鏈接: https://www.lanqiao.cn/problems/2410/learning/ 問題描述 小藍有一個 30 行 60 列的數字矩陣,矩陣中的每個數都是 0 或 1 。 1100100000111111101010010010011010101110110110111010011111100100000000010100011011000000100101100011…

解鎖物種分布模擬新技能:MaxEnt 模型與 R 語言的奇妙融合

技術點目錄 第二章、常用數據檢索與R語言自動化下載及可視化方法第三章、R語言數據清洗與特征變量篩選第四章、基于ArcGIS、R數據處理與進階第五章、基于Maxent的物種分布建模與預測第六章、基于R語言的模型參數優化第七章、物種分布模型結果分析與論文寫作 —————————…

三軸云臺之相機技術篇

一、結構設計 三軸云臺通常由空間上三個互相垂直的框架構成,包括內框(俯仰框)、中框(方位框)和外框(橫滾框)。這些框架分別負責控制相機的俯仰運動、方位運動和橫滾運動,從而實現對目…

全文 - MLIR Toy Tutorial Chapter 3 :高層次上語言特定的分析和變換

使用 C 風格的模式匹配和重寫來優化轉置運算 使用 DRR 優化 reshape 運算 創建一種貼近輸入語言的語義表示的方言,可以在 MLIR 中分析、變換和優化,這些過程中需要用到高級語言的信息,而且通常是在語言的 AST 上執行的這些過程。…

js逆向入門圖靈爬蟲練習平臺 第四題學習

(base64解碼)地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvNC8 先找到請求接口帶有加密參數: 全局搜索Sign,找到參數生成位置 看到這就一目了然塞,知道參數是怎么構造生成的,不知道這段 JavaScript 代碼沒關系…

【Flask開發】嘿馬文學web完整flask項目第2篇:2.用戶認證,Json Web Token(JWT)【附代碼文檔】

教程總體簡介:2. 目標 1.1產品與開發 1.2環境配置 1.3 運行方式 1.4目錄說明 1.5數據庫設計 2.用戶認證 Json Web Token(JWT) 3.書架 4.1分類列表 5.搜索 5.3搜索-精準&高匹配&推薦 6.小說 6.4推薦-同類熱門推薦 7.瀏覽記錄 8.1配置-閱讀偏好 8.配置 9.1項目…

[dp5_多狀態dp] 按摩師 | 打家劫舍 II | 刪除并獲得點數 | 粉刷房子

目錄 1.面試題 17.16. 按摩師 題解 2.打家劫舍 II 題解 3.刪除并獲得點數 題解 4.粉刷房子 題解 一定要有這樣的能力,碰到一個新題的時候,可以往之前做過的題方向靠! 打家劫舍問題模型: 不能選擇相鄰的兩個數,并且要最終…