【自然語言處理與大模型】LlamaIndex的詞嵌入模型和向量數據庫

(1)嵌入模型的定義和作用

????????嵌入模型(Embedding Model)的本質在于將高維的、稀疏的數據轉換為低維的、密集的向量表示,使得這些向量能夠在數學空間中表達原始數據的語義信息。作用如下:

  • 降維表示:嵌入模型能夠將文本、圖像或其它類型的數據映射到一個連續的向量空間中,這個過程通常伴隨著維度的降低。例如,一個包含大量詞匯的文本可以通過嵌入模型被表示為固定長度的向量。

  • 捕捉語義關系:在生成的向量空間中,相似或相關的概念在空間中的距離較近,而不相關或相異的概念則距離較遠。這意味著嵌入模型不僅能捕捉單個詞語或數據點的含義,還能反映它們之間的語義關系。在計算嵌入向量之間的相似度時,有多種方法可供選擇,如點積、余弦相似度等。LlamaIndex 在默認情況下使用余弦相似度來進行嵌入比較。

  • 應用于各種任務:這些向量表示可以用于各種自然語言處理和機器學習任務,如文本分類、情感分析、問答系統、推薦系統等。通過使用嵌入向量,模型可以在不需要理解人類語言復雜性的情況下,理解和處理輸入數據。

  • 基于上下文的學習:對于一些先進的嵌入模型(如BERT及其變體),它們不僅考慮單詞本身的含義,還考慮了單詞在其出現的上下文中的意義。這種方式極大地提高了對多義詞的理解能力,并能更好地捕捉句子層面的語義信息。?

下面介紹一個llamaindex里面最常用的詞嵌入類HuggingFaceEmbedding用之前先安裝庫

pip install llama-index-embeddings-huggingface
# 導入 HuggingFaceEmbedding 類,用于加載本地的詞嵌入(Embedding)模型
from llama_index.embeddings.huggingface import HuggingFaceEmbedding# 初始化一個 HuggingFaceEmbedding 實例
# 指定模型路徑為本地已經下載好的中文 BGE 模型(版本1.5)
# 該模型可以將文本轉換為向量表示(即 Embedding)
embed_model = HuggingFaceEmbedding(model_name="/root/workspace/llm_models/bge_small_zh_v1.5"
)# 使用詞嵌入模型對文本 "Hello World!" 進行編碼,得到其對應的向量表示
# 注意:雖然這是中文模型,但也能處理英文文本
embeddings = embed_model.get_text_embedding("Hello World!")# 打印向量的長度(維度),通常 BGE 模型輸出為 384 或 768 維等
print(len(embeddings))# 打印前5個維度的數值,查看部分向量結果
print(embeddings[:5])

(2)向量數據庫ChromaDB

????????ChromaDB是LlamaIndex中的一個存儲向量數據的組件。它允許用戶將文本數據轉換為向量,并將這些向量存儲在數據庫中,以便進行高效的相似性搜索。ChromaDB特別適用于需要快速檢索與查詢最相似文檔的場景。

pip install chromadb
pip install llama-index-vector-stores-chroma

臨時存放數據(放在內存里)?

from llama_index.vector_stores.chroma import ChromaVectorStore
from llama_index.vector_stores.chroma import ChromaClient# 初始化 ChromaVectorStore
vector_store = ChromaVectorStore()# ChromaVectorStore 需要一個 ChromaDB 客戶端來存儲和管理向量數據。你可以選擇連接到一個現有的 ChromaDB 實例,或者創建一個新的臨時實例。
# 創建一個臨時客戶端
chroma_client = chromadb.EphemeralClient()# 創建一個集合
collection_name = "example_collection"
chroma_collection = chroma_client.create_collection(collection_name)# 通過將客戶端實例傳遞給 ChromaVectorStore,可以將其與具體的數據庫集合關聯起來。
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)# 完成初始化后,您可以使用 ChromaVectorStore 來添加、查詢和檢索向量數據。

持久存放數據(存在磁盤里)

# 初始化一個 ChromaDB 的持久化客戶端,數據將被保存在 "./chroma_db" 目錄下
db = chromadb.PersistentClient(path="./chroma_db")# 獲取或創建一個名為 "quickstart" 的集合(collection),用于存儲向量數據
chroma_collection = db.get_or_create_collection("quickstart")# 將該集合包裝成 LlamaIndex 可用的 VectorStore 接口
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)# 創建一個 StorageContext,指定當前使用的 vector_store,用于控制索引如何存儲和加載數據
storage_context = StorageContext.from_defaults(vector_store=vector_store)# 使用文檔(documents)和 storage_context 構建一個 VectorStoreIndex 索引
# 在此過程中會使用 embed_model 對文檔進行嵌入編碼,并將結果寫入磁盤上的 ChromaDB
index = VectorStoreIndex.from_documents(documents, storage_context=storage_context, embed_model=embed_model
)

從磁盤加載(恢復索引)

# 重新初始化一個 ChromaDB 客戶端,指向同一個路徑
db2 = chromadb.PersistentClient(path="./chroma_db")# 獲取之前創建的 collection(集合)
chroma_collection = db2.get_or_create_collection("quickstart")# 同樣包裝成 LlamaIndex 的 VectorStore
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)# 從現有的 vector_store 中重建索引,不依賴原始文檔
index = VectorStoreIndex.from_vector_store(vector_store,embed_model=embed_model,
)

查詢索引:查詢引擎會在底層自動將問題嵌入,然后在向量庫中查找最相關的文檔片段。結合檢索結果,生成自然語言的回答。

# 將索引封裝為一個查詢引擎
query_engine = index.as_query_engine()# 執行自然語言查詢:"作者在成長過程中做了什么?"
response = query_engine.query("作者在成長過程中做了什么?")展示響應結果
print(response)

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

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

相關文章

長事務:數據庫中的“隱形炸彈“——金倉數據庫運維避坑指南

引言:凌晨三點的告警 "張工!生產庫又告警了!"凌晨三點的電話鈴聲總是格外刺耳。運維團隊發現數據庫頻繁進入單用戶模式,排查發現某核心表的年齡值(Age)已突破20億大關。經過一夜奮戰&#xff0c…

【Elasticsearch入門到落地】12、索引庫刪除判斷以及文檔增刪改查

接上篇《11、RestClient初始化索引庫》 上一篇我們完成了使用RestHighLevelClient創建索引庫的代碼實現,本篇將講解如何判斷索引庫是否存在并刪除它,以及如何對索引庫中的文檔進行增刪改查操作。 一、索引庫判斷與刪除 在操作索引庫時,有時…

國聯股份衛多多與國術科技簽署戰略合作協議

4月30日,國術科技(北京)有限公司(以下簡稱“國術科技”)營銷中心總經理 王志廣、賈雷一行到訪國聯股份衛多多,同衛多多/紙多多副總裁、產發部總經理段任飛,衛多多機器人產業鏈總經理桂林展開深入…

linux mcelog inject注入

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、mce inject是什么?二、使用步驟1.操作示例 總結 前言 記錄下mce 觸發inject和內核打印 內核版本: 5.10.92 開啟選項:…

Nginx安全防護與HTTPS部署實戰

目錄 一:核心安全配置 1:編譯安裝nginx (1)安裝支持軟件 (2)創建運行用戶,組和日志目錄 (3)編譯安裝nginx (4)添加nginx系統服務 2&#xf…

DeepSeek API接口調用示例(開發語言C#,替換其中key值為自己的key值即可)

示例: DeepSeek官方接口說明文檔:對話補全 | DeepSeek API Docs 官網暫未提供C#代碼實現:(以下為根據CURL接口C#代碼調用) using System; using System.Collections.Generic; using System.Linq; using System.Text; …

一文掌握 LVGL 9 的源碼目錄結構

文章目錄 📂 一文掌握 LVGL 9 的源碼目錄結構🧭 頂層目錄概覽📁 1. src/ — LVGL 的核心源碼(🔥重點)📁 2. examples/ — API 示例📁 3. demos/ — 綜合演示項目📁 4. do…

大物重修之淺顯知識點

第一章 質點運動學 例1 知識點公式如下: 例2 例3 例4 例5 例6 第四章 剛體的轉動 例1 例2 例3 例4 例5 例6 第五章 簡諧振動 例1 例2 例3 第六章 機械波 第八章 熱力學基礎 第九章 靜電場 第十一章 恒定磁場…

安卓的systemservice 、systemserver、systemservicemanage和servicemanage用法

以下是對安卓中SystemService、SystemServer、SystemServiceManager和ServiceManager的講解和區別: SystemService 定義:是Framework中對應特定功能的服務,供其他模塊和App調用,如BatteryService、PowerManagerService等。它是所…

LDO與DCDC總結

目錄 1. 工作原理 2. 性能對比 3. 選型關鍵因素 4. 典型應用 總結 1. 工作原理 LDO LDO通過線性調節方式實現降壓,輸入電壓需略高于輸出電壓(壓差通常為0.2-2V),利用內部PMOS管或PNP三極管調整壓差以穩定輸出電壓。其結構簡單…

系統的從零開始學習電子的相關知識,該如何規劃?

一、基礎理論奠基(6-12個月) 1.1 數學與物理基礎 核心內容: 微積分與線性代數(高頻電路建模必備)復變函數與概率論(信號處理與通信系統基礎)電磁場基礎(麥克斯韋方程組的物理意義&…

(x ^ 2 + 2y ? 1) ^ 3 ? x ^ 2 * y ^ 3 = 1

二元高次方程 EquationSolver20250509.java package math;import org.apache.commons.math3.analysis.MultivariateFunction; import org.apache.commons.math3.optim.InitialGuess; import org.apache.commons.math3.optim.MaxEval; import org.apache.commons.math3.optim.P…

解決應用程序在JAR包中運行時無法讀取類路徑下文件的問題

問題情景 java應用程序在IDE運行正常,打成jar包后執行卻發生異常: java.io.FileNotFoundException: class path resource [cert/sync_signer_pri_test.key] cannot be resolved to absolute file path because it does not reside in the file system:…

Mac QT水平布局和垂直布局

首先上代碼 #include "mainwindow.h" #include "ui_mainwindow.h" #include <QPushButton> #include<QVBoxLayout>//垂直布局 #include<QHBoxLayout>//水平布局頭文件 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), …

uniapp中用canvas繪制簡單柱形圖,小容量,不用插件——簡單使用canvas

uniapp中用canvas繪制簡單柱形圖&#xff0c;小容量&#xff0c;不用插件——簡單使用canvas 完整代碼 <template><view><!-- 學習數據 --><!-- 頭部選項卡 --><view class"navTab"><view :class"listIndexi?activite:"…

[Unity]-[UI]-[Image] 關于UI精靈圖資源導入設置的詳細解釋

Unity UI Sprite UI資源導入詳解圖片導入項目Texture TypeTexture ShapeAdvanced Setting 高級設置 圖片設置案例常見細節問題 知識點詳解來源 UI資源導入詳解 Unity中的UI資源有圖片、矢量圖、字體、預制體、圖集、動畫等等資源。 這其中圖片是最重要以及最基礎的資源組成&a…

【遞歸、搜索和回溯】遞歸、搜索和回溯介紹及遞歸類算法例題

個人主頁 &#xff1a; zxctscl 專欄 【C】、 【C語言】、 【Linux】、 【數據結構】、 【算法】 如有轉載請先通知 文章目錄 遞歸、搜索和回溯遞歸搜索VS 深度優先遍歷 VS 深度優先搜索 VS 寬度優先遍歷 VS 寬度優先搜索 VS 暴搜回溯與剪枝 1 面試題 08.06. 漢諾塔問題1.1 分析…

快手618購物節招商啟動,國補可疊加跨店滿減等大促補貼

5月8日&#xff0c;快手電商在杭州召開「破峰2025」商家大會。會上&#xff0c;快手電商C端產品負責人孔慧介紹了快手電商全域經營年度策略以及新銳商家長效經營方法論&#xff0c;并宣布快手618購物節招商報名正式啟動。 信任社區生態是快手電商發展的基石&#xff0c;2025年…

AI服務器通常會運用在哪些場景當中?

人工智能行業作為現代科技的杰出代表&#xff0c;在多個領域當中發展其強大的應用能力和價值&#xff0c;隨之&#xff0c;AI服務器也在各個行業中日益顯現出來&#xff0c;為各個行業提供了強大的計算能力和處理能力&#xff0c;幫助企業處理復雜的大規模數據&#xff0c;本文…

MySQL高可用方案全攻略:選型指南與AI運維實踐

MySQL高可用方案全攻略:選型指南與AI運維實踐 引言:當數據庫成為業務生命線 在數字化時代,數據庫就是企業的"心臟"。一次數據庫宕機可能導致: 電商網站每秒損失上萬元訂單游戲公司遭遇玩家大規模流失金融系統引發連鎖反應本文將為你揭秘: MySQL主流高可用方案…