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
































