大家好!隨著世界越來越多地轉向人工智慧驅動的解決方案,身為全端開發人員,我對生成式人工智慧的潛力產生了興趣。我出於好奇探索其功能和挑戰,決定深入了解並了解更多資訊。在過去的幾個月裡,我一直在學習和記錄我的旅程,收集有關生成式人工智慧的見解。今天,我很高興能與大家分享我一路上所獲得的知識和經驗!
我在我的個人部落格中整理了有關生成式 AI、嵌入、向量資料庫、RAG 等的所有筆記。如果您有興趣探索我收集的所有資源和見解,請隨時在此處查看。
當我第一次開始攻讀LLMs時,我立即被「變壓器」架構所吸引。作為一個喜歡了解事物內部運作方式的人,我知道這是將一切結合在一起的基礎。但讓我告訴你——一開始並不容易理解。 Transformer 的核心是使用注意力機制來允許模型權衡序列中不同單字的重要性。與先前的 RNN 或 LSTM 等模型相比,這是一個巨大的飛躍,這些模型一直在努力解決文本中的遠端依賴關係。
轉換器之所以如此具有變革性(沒有雙關語!)是因為它們允許模型有效地處理大量文字資料,同時在較長的段落中保持上下文。然而,據我所知,我仍然沒有完全理解這些模型如何運作的每一個細節。例如,雖然注意力的概念很明確,但背後更深層的數學運算仍然讓人感覺抽象。也就是說,我整理了一份資源列表,幫助我理解這些概念,這對任何想要開始自己探索的人來說可能很有用:
YouTube 影片:
大型語言模型簡介(1 小時講座)
部落格:
一旦我對變形金剛感到有些舒服,我就把注意力轉向即時工程的藝術和科學。我很快意識到,雖然轉換器可以產生令人印象深刻的文本,但它們的輸出品質通常取決於輸入提示的製作程度。這就是思想鏈 (COT)、REACT 和思想樹等技術發揮作用的地方。透過指導模型的推理過程,我們可以獲得更精確和準確的結果。
然而,即時工程並不是萬能的解決方案。提示的措詞方式會顯著影響模型的表現。例如,對相同問題進行簡單的改寫可能會導致截然不同的反應。有許多資源可以幫助我完善提示設計方法:
YouTube 影片:
部落格:
https://lilianweng.github.io/posts/2023-03-15-prompt-engineering/
我如何看待LLM提示工程(Francois Chollet,2023)
我瀏覽了一些關於即時工程的研究論文,可能對您有幫助
較大的語言模型以不同的方式進行情境學習(Wei et al., 2023)
增強您的即時工程技能的工具
與任何工藝一樣,擁有合適的工具至關重要。雖然快速工程可能是一個耗時的過程,但有一些工具可以幫助簡化它。例如, Zenbase等平台可自動執行模型選擇和提示生成,從而減少了手動操作。同樣, Prompt Optimizer和EvalLM等工具提供了互動式功能,可根據使用者定義的標準進行評估,從而幫助微調提示。這些資源使我能夠更輕鬆地嘗試不同的策略並了解哪種策略最有效。
下一個令人興奮的步驟是探索檢索增強生成(RAG) 。如果您一直在關注人工智慧和大型語言模型 (LLM) 的進展,您可能會意識到這些模型非常強大,但也有限制:它們只能根據訓練過的資料產生答案。但是,當您需要他們回答有關他們以前從未遇到過的主題或領域的問題時,會發生什麼?這就是 RAG 發揮作用的地方,它使LLMs能夠即時存取外部知識庫,從而變得更加聰明。
什麼是RAG?
從本質上講, RAG是一種將LLMs的生成能力與外部資料庫的檢索能力相結合的技術。這種組合允許模型從知識庫或資料集中提取相關訊息,然後使用這些資訊產生更明智、上下文準確的答案。可以將其視為讓LLMs能夠存取龐大且不斷更新的資訊池,使其能夠提供從未直接接受過培訓的主題的答案。
典型的 RAG 系統有三個關鍵元件:
知識庫/外部語料庫:這是檢索器將存取以獲取相關資訊的外部資料集或資料庫。它可以是靜態資料庫、搜尋引擎等動態來源,甚至是一組經常更新的文件。
檢索器:檢索器的工作是在知識庫中搜尋相關文件或資訊片段。它使用各種演算法來獲取最相關的資料來回答查詢。
LLM(大型語言模型) :檢索器擷取必要的資訊後,LLM 使用此資料產生回應。LLMs本質上是透過將其答案建立在檢索到的資料提供的上下文中來「增強」其生成過程。
一些可幫助您開始使用 RAG 的資源
用於檢索的文本分割的 5 個層級(Greg Kamradt,2024)
在熟悉了檢索增強生成(RAG)的核心概念後,我渴望將我的知識付諸實踐。我旅程的下一步是探索可以幫助我有效實施 RAG 的框架。我開始嘗試一些流行的工具,包括Langchain 、 LlamaIndex和RAGFlow 。這些框架允許您透過將外部資料檢索與強大的生成模型相結合來快速建立基於 RAG 的應用程式,我很高興在單獨的部落格文章中分享我的經驗。
我想加深對 RAG 及其更高級主題的理解。我開始閱讀有關該主題的研究論文,探索得越多,我就越意識到 RAG 是一個比我最初想像的更廣泛、更豐富的領域。 RAG 存在不同的變體,每種變體都滿足資訊檢索和生成中的特定需求和挑戰。
RAG優化
分塊法
樸素分塊將文字分割成固定長度的字元區塊,速度快,但缺乏文件結構考量。
句子分割使用 NLTK 或 SpaCy 等 NLP 工具將文字分解為句子,從而提供更高的精確度。
遞歸字元文字分割結合了基於字元和結構感知的分塊,在保留文件流的同時優化了區塊大小。
結構分塊器根據文件模式(例如 HTML 或 Markdown)分割文本,新增上下文元資料。
語義分塊使用嵌入模型對語義相似的句子進行分組,以更高的計算成本建立更連貫的區塊。看看這篇好文章來視覺化這裡的分塊
檢索演算法在 RAG 系統中發揮關鍵作用,有助於有效地找到相關資料。
餘弦相似度和歐幾里德距離測量向量之間的相似度,而基於圖的 RAG和精確最近鄰 (k-NN)搜尋相關資訊。
HNSW和產品量化 (PQ)透過建立可擴展的圖形結構和減少儲存需求來優化搜尋。
局部敏感雜湊 (LSH)透過對相似向量進行雜湊處理來加速查找,而基於術語的演算法BM25根據查詢術語頻率和相關性對文件進行排名。
RAG 系統中用於提高資訊檢索的品質和相關性的檢索類型:
GPT 排名:查詢向量資料庫後,系統要求LLMs根據與查詢的相關性對檢索到的文件進行排名。然後,重新排序的文件將被發送回LLMs進行最終生成,從而提高回應品質。
多重查詢檢索:此方法不依賴單一查詢,而是首先將使用者查詢傳送至 LLM 並要求其建議其他或相關查詢。然後,使用這些新查詢從資料庫中獲取更多相關訊息,從而豐富回應。
上下文壓縮:LLMs被要求提取並僅提供文件中最相關的部分,從而減少需要處理的上下文量。這有助於優化LLMs的輸入,確保更集中和有效率的回應。
假設文件嵌入:LLMs的任務是產生一個可以最好地回答查詢的「假設」文件。然後,使用該假設文件作為從資料庫中檢索相關資料的提示,使回應更符合使用者的需求。
RAG 評估依賴一組關鍵指標來評估檢索增強發電輸出的品質。這些指標確保反應不僅準確,而且與檢索到的上下文緊密相關。
上下文相關性:這衡量檢索到的文件是否真正與使用者查詢相關。如果上下文不相關,最終的回應可能會不準確或不完整。
答案相關性:這檢查模型的回應是否有效地解決了查詢。即使上下文是相關的,答案也必須與其直接相關才能有用。
接地性:這確保響應得到檢索到的上下文的良好支援。接地氣的回應是指得到相關文件中訊息的明確支持的回應,避免幻覺或捏造的細節。
以下是一些開始使用高級 RAG 的資源:
如果您深入研究RAG(檢索增強生成) ,您可能已經了解向量資料庫在優化檢索和生成過程中發揮的關鍵作用。向量資料庫儲存嵌入(資料的高維表示),允許快速相似性搜尋和有效檢索相關資訊。
與依賴關鍵字匹配的傳統資料庫不同,向量資料庫使用演算法來測量向量空間中資料點的接近度(例如,餘弦相似度或歐幾里德距離),這使得它們非常適合處理文字、圖像和音訊等非結構化資料。
一些流行的向量資料庫解決方案包括:
奎德蘭特
松果
韋維阿特
費斯(來自臉書)
風箏
色度
在深入了解向量資料庫的工作原理之前,了解嵌入的概念非常重要,因為它們構成了向量資料庫中資料表示和搜尋方式的基礎。嵌入是資料(如文字、影像或音訊)的數位表示,可在高維空間中捕捉其語義。這些嵌入允許演算法測量不同資料點之間的相似性,這對於語義搜尋和推薦系統等任務至關重要。
以下是一些學習嵌入的重要資源:
一旦您熟悉了嵌入,深入研究向量資料庫就會容易得多,因為大多數核心概念在不同的資料庫中都是相似的。主要差異通常在於語法和每個資料庫提供的一些特定功能。向量資料庫旨在儲存、索引和檢索高維向量(例如由嵌入生成的向量),從而實現快速相似性搜尋。
向量資料庫中的高階概念
這就是今天的全部內容
現在您已經在Transformer 、嵌入、向量資料庫和RAG(檢索增強生成)的資源打下了堅實的基礎,您已經做好了更深入地研究生成式 AI 的準備。我們所介紹的概念是重要的建構模組,可協助您了解 AI 模型如何根據訓練的資料檢索、處理和產生資訊。
無論您是使用 RAG 建立應用程式還是探索大規模向量搜尋的複雜性,這些資源都將引導您逐步掌握該領域。
請繼續關注我的下一篇博客,我將深入探討更高級的主題,例如LLM 的結構化輸出、 LLM 可觀察性、 LLM 評估以及使用生成 AI 的代理和專案。這些都是關鍵領域,將提高您對大型語言模型的理解和使用,使您能夠建立更複雜、更有效率、更可靠的人工智慧系統。請密切關注即將推出的更多見解!
在那之前,祝您探索愉快! 😊
最後,如果文章對你有幫助,請按讚👏並關注,謝謝!
如果您發現這些註釋很有幫助,並且希望看到更多這樣的內容,請考慮支持我“請我喝杯咖啡” 。您的支持激發了我的好奇心,並激勵我繼續與您分享我的學習之旅!
原文出處:https://dev.to/programmerraja/generative-ai-a-personal-deep-dive-my-notes-and-insights-1ph0