萬字 AI 干貨及感悟分享
嗨, 大家好, 我是徐小夕.
之前一直在社區(qū)分享零代碼&低代碼的技術實踐,也陸陸續(xù)續(xù)設計并開發(fā)了多款可視化搭建產(chǎn)品,比如:
- H5-Dooring(頁面可視化搭建平臺)
- V6.Dooring(可視化大屏搭建平臺)
- 橙子6試卷(表單搭建引擎)
- Nocode/WEP 文檔知識引擎
最近一直在研究 AI Agent 在零代碼平臺中的應用, 特地研究并總結(jié)了一份AI學習的干貨, 方便大家快速理解LLM, 并熟悉主流的AI大模型框架, 以及如何基于AI, 來改善我們傳統(tǒng)的工作模式.
圖片
上面是本文的核心大綱, 接下來開始我的分享和總結(jié)。
LLM介紹
1. LLM概念
大語言模型(Large Language Model) :通常是具有大規(guī)模參數(shù)和計算能力的自然語言處理模型,例如 OpenAI 的 GPT-3 模型。這些模型可以通過大量的數(shù)據(jù)和參數(shù)進行訓練,以生成人類類似的文本或回答自然語言的問題。大型語言模型在自然語言處理、文本生成和智能對話等領域有廣泛應用。
2. 大模型分類
按照輸入數(shù)據(jù)類型的不同,大模型主要可以分為以下三大類:
圖片
語言大模型(NLP): 是指在自然語言處理(Natural Language Processing,NLP)領域中的一類大模型,通常用于處理文本數(shù)據(jù)和理解自然語言。這類大模型的主要特點是它們在大規(guī)模語料庫上進行了訓練,以學習自然語言的各種語法、語義和語境規(guī)則。例如:GPT 系列(OpenAI)。
視覺大模型(CV): 是指在計算機視覺(Computer Vision,CV)領域中使用的大模型,通常用于圖像處理和分析。這類模型通過在大規(guī)模圖像數(shù)據(jù)上進行訓練,可以實現(xiàn)各種視覺任務, 比如圖像分類, 人臉識別, 目標檢測。
多模態(tài)大模型: 是指能夠處理多種不同類型數(shù)據(jù)的大模型,例如文本、圖像、音頻等多模態(tài)數(shù)據(jù)。這類模型結(jié)合了 NLP 和 CV 的能力,以實現(xiàn)對多模態(tài)信息的綜合理解和分析,從而能夠更全面地理解和處理復雜的數(shù)據(jù)。例如:DingoDB 多模向量數(shù)據(jù)庫(九章云極 DataCanvas)、DALL-E(OpenAI)、悟空畫畫(華為)、midjourney。
3.大語言模型的工作機制
圖片
最知名的大型語言模型(LLM)架構基本都是Transformer架構。典型的Transformer模型在處理輸入數(shù)據(jù)時有四個主要步驟:
1. 詞嵌入: 模型進行詞嵌入,將單詞轉(zhuǎn)換為高維向量表示。然后,數(shù)據(jù)通過多個Transformer層進行傳遞。這有助于模型理解單詞的含義,并基于此進行預測。
2.位置編碼(Positional Encoding): 位置編碼是幫助模型確定單詞在序列中的位置的技術。位置編碼主要用于跟蹤單詞的順序。例如,當將句子”我喜歡貓”輸入到模型時,位置編碼可以幫助模型區(qū)分”我”是在句子的開頭,而”貓”是在句子的結(jié)尾。這對于模型理解上下文和生成連貫的輸出非常重要。
3.自注意力機制(Self-Attention Mechanism) : 自注意力機制是Transformer模型的核心組成部分。它允許模型在生成輸出時,有效地在輸入序列的不同位置進行交互和關注。自注意力機制的關鍵思想是計算輸入序列中每個單詞之間的相關性,并將這些相關性用于權衡模型在每個位置的關注程度。
4. 前饋神經(jīng)網(wǎng)絡(Feed-forward Neural Network): 前饋神經(jīng)網(wǎng)絡對每個位置的表示進行進一步的處理。前饋神經(jīng)網(wǎng)絡是由多個全連接層組成的,其中每個層都有一組參數(shù),用于將輸入進行非線性變換。這個過程可以幫助模型在生成輸出時引入更多的復雜性和靈活性。
二.LangChain原理和應用案例
Langchain 是一個開源框架,它允許開發(fā)人員將類似 GPT-4 這樣的大型語言模型與外部的計算和數(shù)據(jù)源結(jié)合起來, 用于提升大型語言模型(LLMs)的功能。
圖片
它提供了 Python 和 TypeScript的軟件包。
Langchain 通過三個核心組件實現(xiàn)增強:
- Compents“組件”: 為LLMs提供接口封裝、模板提示和信息檢索索引;
- Chains“鏈”: 它將不同的組件組合起來解決特定的任務,比如在大量文本中查找信息;
- Agents“代理”: 它們使得LLMs能夠與外部環(huán)境進行交互,例如通過;
Langchain 的這種結(jié)構設計使LLMs不僅能夠處理文本,還能夠在更廣泛的應用環(huán)境中進行操作和響應,大大擴展了它們的應用范圍和有效性。
圖片
有點類似java的JDBC, 為 Java 開發(fā)人員提供了一種統(tǒng)一的方式來訪問不同數(shù)據(jù)庫,使得在不同數(shù)據(jù)庫之間切換更加方便。
1.LangChain的工作流程
圖片
- 提問:用戶提出問題;
- 向語言模型查詢:問題被轉(zhuǎn)換成向量表示,用于在向量數(shù)據(jù)庫中進行相似性搜索;
- 獲取相關信息:從向量數(shù)據(jù)庫中提取相關信息塊;
- 輸入給語言模型:將相關信息輸入給語言模型;
- 生成答案或執(zhí)行操作:語言模型結(jié)合初始問題和相關信息,提供答案或執(zhí)行相應操作。
2. 應用場景
LangChain 的應用場景十分廣泛,以下是一些常見的應用場景和案例:
- 文本總結(jié):可以對長篇文章、書籍、報告等文本進行總結(jié),提取關鍵信息,例如對新聞文章進行摘要,幫助讀者快速了解主要內(nèi)容。
- 文檔問答:基于文檔內(nèi)容進行問答,例如針對產(chǎn)品手冊、技術文檔等,用戶提出問題,系統(tǒng)根據(jù)文檔中的信息給出準確回答。
- 信息抽?。簭拇罅课谋局谐槿〗Y(jié)構化的信息,如從簡歷中提取姓名、聯(lián)系方式、工作經(jīng)歷等關鍵內(nèi)容。
- 聊天機器人:構建具備記憶能力的聊天機器人,能夠與用戶進行多輪對話,并記住之前的對話內(nèi)容,提供更個性化的服務。例如在線客服機器人,能夠理解用戶的問題并提供解決方案。
- 智能問答系統(tǒng):應用于智能客服、智能助手等,回答各種問題,提供相關的知識和信息。
- 代碼理解與分析:分析代碼,并從代碼中獲取邏輯,同時也支持代碼相關的問答。
- 語言翻譯:雖然 LangChain 本身不直接進行語言翻譯,但可以與其他翻譯工具或模型結(jié)合,實現(xiàn)翻譯功能。
- 數(shù)據(jù)庫交互:從數(shù)據(jù)庫或類數(shù)據(jù)庫內(nèi)容中抽取數(shù)據(jù)信息,實現(xiàn)對數(shù)據(jù)庫的查詢和操作。
- 內(nèi)容生成:生成文章、故事、詩歌等各種文本內(nèi)容。
- API 交互:通過對 API 文檔的閱讀和理解,向真實世界的 API 發(fā)送請求并獲取數(shù)據(jù),例如調(diào)用天氣預報 API 來獲取天氣信息并回答用戶的相關問題。
三. AI Agents 原理和應用案例
AI Agents(人工智能代理)的原理是通過感知環(huán)境、進行決策和執(zhí)行動作來實現(xiàn)特定目標。它通常包含規(guī)劃、記憶、工具和行動等關鍵模塊,其工作流程大致如下:
- 目標初始化:為 AI Agents 設定清晰的目標,它們利用核心語言模型(如 GPT-3.5 或 GPT-4)來理解這些目標,并啟動相應的行動計劃;
- 任務列表創(chuàng)建:根據(jù)設定的目標生成一系列任務,確定任務的優(yōu)先級、規(guī)劃執(zhí)行順序,并為可能的意外情況做好準備;
- 信息收集:收集相關信息,這可能包括搜索互聯(lián)網(wǎng)、訪問數(shù)據(jù)庫或與其他 AI 模型交互等,以執(zhí)行特定任務;
- 數(shù)據(jù)管理和策略細化:不斷管理和分析收集到的數(shù)據(jù),根據(jù)數(shù)據(jù)和目標調(diào)整策略;
- 執(zhí)行任務:基于規(guī)劃和記憶來執(zhí)行具體的行動,這可能包括與外部世界互動,或通過工具的調(diào)用來完成一個動作;
- 學習和優(yōu)化:從每次交互和任務執(zhí)行中學習,不斷優(yōu)化自身的性能和策略,以更好地適應新情況和實現(xiàn)目標。
大白話來說就是一種能自主實現(xiàn)目標的“個體”. 類似如下流程:
圖片
我們將場景抽象成模型, 大致長下面這個樣子:
圖片
1. 開發(fā)一個AI Agent的步驟
- 確定目標和功能:明確你希望 AI Agent 實現(xiàn)的具體目標和具備的功能。
- 選擇合適的技術和框架:根據(jù)需求選擇適合的人工智能技術,如深度學習框架等。
- 數(shù)據(jù)收集和準備:收集和整理與目標相關的數(shù)據(jù),進行清洗和預處理。
- 模型訓練:使用收集的數(shù)據(jù)訓練模型,調(diào)整參數(shù)以優(yōu)化性能。
- 模型評估和優(yōu)化:對訓練好的模型進行評估,根據(jù)結(jié)果進行優(yōu)化和改進。
- 集成和部署:將模型與相關系統(tǒng)集成,并進行部署和測試。
使用通義千問實現(xiàn)AI Agent的案例:
要使用通義千問實現(xiàn)一個 AI Agent,我們可以參考下面的步驟:
- 安裝所需的庫:使用 pip 安裝qwen-agent命令為pip install -u qwen-agent
- 準備模型服務:你可以選擇使用阿里云的 Dashscope 提供的模型服務,或者自行部署和使用開源的通義千問模型服務。如果使用 Dashscope,需確保設置了環(huán)境變量
- 開發(fā)自己的 agent:以下是一個簡單的示例,創(chuàng)建一個能夠讀取 PDF 文件和利用工具的代理。
首先,添加一個自定義工具,例如圖片生成工具:
import urllib.parse
import json5
from qwen_agent.tools.base import basetool, register_tool
@register_tool('my_image_gen')
class myimagegen(basetool):
description = 'aipainting(image generation) service, input text description, and return the image url drawn based on text information.'
parameters = ({
'name': 'prompt',
'type':'string',
'description': 'detailed description of the desired image content, in english',
'equired': True
})
def call(self, params: str, **kwargs) -> str:
prompt = json5.loads(params)('prompt')
prompt = urllib.parse.quote(prompt)
return json5.dumps(
{'image_url': f'https://image.pollinations.ai/prompt/{prompt}'},
ensure_ascii=False)
然后,配置使用的 LLM 模型:
llm_cfg = {
'odel': 'qwen-max',
'odel_server': 'dashscope',
#'api_key': 'your_dashscope_api_key', # 可根據(jù)實際情況設置或使用環(huán)境變量
# 可選的生成配置,用于調(diào)整生成參數(shù)
'generate_cfg': {
'top_p': 0.8
}
}
接下來,創(chuàng)建 agent:
from qwen_agent.agents import assistant
system_instruction = '''you are a helpful assistant.
after receiving the user's request, you should:
-first draw an image and obtain the image url,
-then run code `request.get(image_url)` to download the image,
-and finally select an image operation from the given document to process the image.
please show the image using `plt.show()`.'''
tools = ('my_image_gen', ) # 這里添加你需要的工具
agent = assistant(system_instructinotallow=system_instruction, tools=tools, llm_cfg=llm_cfg)
最后,我們可以以聊天機器人的形式運行這個助理,與它進行交互并執(zhí)行相關任務。請注意,這只是一個基本的示例,實際開發(fā)中可能需要根據(jù)具體需求進一步擴展和定制 agent 的功能,包括添加更多工具、處理不同類型的任務、優(yōu)化交互方式等。
四.Rag原理和應用案例
圖片
為什么要用RAG技術?
RAG(檢索增強生成)主要解決了大語言模型(LLM)的以下幾個問題:
- 幻覺問題:LLM 因為是預訓練模型,當用戶提出的問題與其知識儲備不相符時,可能會產(chǎn)生看似正確實則錯誤的回答,即出現(xiàn)“幻覺”。RAG 通過從外部知識庫中檢索相關信息,為 LLM 提供更準確的依據(jù),從而減少幻覺的產(chǎn)生。
- 數(shù)據(jù)新鮮度問題:LLM 預訓練完成后,不能感知實時更新的數(shù)據(jù)。RAG 可以將實時更新的公域數(shù)據(jù)或企業(yè)內(nèi)部私域數(shù)據(jù)進行處理后,提供給 LLM,使其能夠生成基于最新信息的回答。
- 知識局限性問題:LLM 可能在某些小眾領域的知識不足。RAG 能通過向量匹配,幫助找到與提問最相關的段落或文章,補充 LLM 缺乏的知識。
- 隱私保護問題:企業(yè)可能出于安全考慮,不想讓 LLM 訓練自家的敏感數(shù)據(jù)或機密文檔。RAG 可以在不暴露敏感數(shù)據(jù)的情況下,從知識庫中檢索相關信息,為 LLM 提供回答所需的內(nèi)容。
RAG是一種使用來自私有或?qū)S袛?shù)據(jù)源的信息來輔助文本生成的技術。它將檢索模型(用于搜索大型數(shù)據(jù)集或知識庫)和生成模型(如大型語言模型 LLM)結(jié)合在一起,通過從更多數(shù)據(jù)源添加背景信息,以及通過訓練來補充 LLM 的原始知識庫,從而提高搜索體驗的相關性,改善大型語言模型的輸出,且無需重新訓練模型。
RAG 的工作原理如下:
- 檢索:將用戶的查詢通過嵌入模型轉(zhuǎn)化為向量,與向量數(shù)據(jù)庫中的其他上下文信息進行比對,通過相似性搜索找到向量數(shù)據(jù)庫中最匹配的前 k 個數(shù)據(jù)。
- 增強:將用戶的查詢和檢索到的額外信息一起嵌入到預設的提示模板中,提供更豐富、更具上下文的信息,以便于后續(xù)的生成過程。
- 生成:將經(jīng)過檢索增強的提示內(nèi)容輸入到大型語言模型(LLM)中,生成所需的輸出。
舉一個RAG 的一個應用案例:假設要構建一個智能客服系統(tǒng),能夠回答關于產(chǎn)品的各種問題。首先,收集產(chǎn)品相關的文檔、常見問題解答等數(shù)據(jù),并將這些數(shù)據(jù)進行處理和向量化后存入向量數(shù)據(jù)庫。當用戶提出問題時,系統(tǒng)通過檢索模塊在向量數(shù)據(jù)庫中查找相關信息,然后將查詢和檢索到的信息一起輸入到提示模板中進行增強。最后,利用大型語言模型根據(jù)增強后的提示生成準確且符合語境的回答。
例如,用戶詢問“某產(chǎn)品的最新功能有哪些”,RAG 系統(tǒng)會從數(shù)據(jù)庫中檢索到該產(chǎn)品的最新信息,將其與問題一起提供給 LLM,使得 LLM 生成的回答包含最新的、準確的產(chǎn)品功能描述,而不僅僅依賴于其預先訓練的知識。
完整的RAG工作流程分為兩個階段:
圖片
RAG 的優(yōu)點包括提高答案準確性、減少幻覺、能夠識別最新信息以保持回答的及時性和準確性、高度透明從而增強用戶對輸出結(jié)果的信任、可定制化以支持不同領域的專業(yè)知識,以及在安全性和隱私管理方面有較好的控制、處理大規(guī)模數(shù)據(jù)集時具有更好的擴展性和經(jīng)濟效率、提供更值得信賴的結(jié)果等。
然而,RAG 系統(tǒng)在實際應用中也面臨一些挑戰(zhàn),例如檢索質(zhì)量方面可能存在精度問題( 檢索結(jié)果不完全相關)、低召回率問題(未能檢索到所有相關文檔塊)、過時信息問題;回應生成質(zhì)量方面可能出現(xiàn)錯誤信息、回答不相關性、有害或偏見性回應等;在增強過程中面臨上下文融合、處理冗余和重復、評估文段價值、保持輸出一致性、避免過度依賴增強信息等問題。
為了解決這些挑戰(zhàn),可能需要優(yōu)化檢索算法、提升嵌入模型的性能、精心設計提示模板、進行數(shù)據(jù)清洗和更新、引入人工審核或反饋機制等措施。同時,根據(jù)具體的應用場景和需求,選擇合適的檢索模型、LLM、向量數(shù)據(jù)庫等組件,并不斷調(diào)整和改進系統(tǒng)的參數(shù)和配置,以提高 RAG 系統(tǒng)的性能和效果。
推薦2個相對成熟的Rag方案:
- GraphRAG:微軟開源的一種基于圖的檢索增強生成方法。它利用大型語言模型構建知識圖譜,將圖譜聚類成不同粒度級別的相關實體社區(qū)。在進行 RAG 操作時,遍歷所有社區(qū)以創(chuàng)建“社區(qū)答案”,并進行縮減得到最終答案。該方法在處理私有數(shù)據(jù)時性能較好,具備跨大型數(shù)據(jù)集的復雜語義問題推理能力。其開源地址為:https://github.com/microsoft/graphrag
- HyKGE:這是知識圖譜與檢索增強生成技術結(jié)合的一種方案。通過利用大型語言模型的深度語義理解與知識生成能力,結(jié)合知識圖譜豐富的結(jié)構化信息,能夠提高醫(yī)學信息檢索的效率,并確?;卮鸬木_度。該框架利用大型語言模型生成假設性回答以增強圖譜檢索,采用 HO 片段重排名機制過濾噪聲知識,包含假設輸出模塊、命名實體識別模塊、知識圖譜檢索模塊和 HO 片段粒度感知重排模塊等組件。
五. AI + 低代碼/零代碼的思考
目前主要能落地的幾個方向主要有:
- 素材生成(AIGC), 比如圖文,音視頻
- 頁面生成(基于訓練的Schema, 批量生成Schema, 進而實現(xiàn)批量頁面模版生成)
- 業(yè)務流程生成
- 接口 / 數(shù)據(jù)庫表自動創(chuàng)建
- 應用創(chuàng)建
后續(xù)我也會出幾個實踐案例, 和大家分享一下如何讓AI賦能零代碼.
六. 前端效能
1.下一代工作模式和研發(fā)思維方式
圖片
上面是我總結(jié)的一些和AI共存的思考, 大家可以參考一下.
2.AI輔助工具Marscode 和 知識庫創(chuàng)作工具Nocode/WEP
圖片
或者使用我自研的下一代AI文檔知識庫工具Nocode/WEP, 來輕松幫大家搭建AI知識庫:
圖片