[DataWhale大模型應用開發]學習筆記1-嘗試搭建向量數據庫

1.詞向量

1.定義

詞向量(Word Vector)是將單詞表示為向量形式的技術,是自然語言處理(NLP)中的一種常用方法。通過將單詞轉化為向量,計算機能夠更好地理解和處理語言。簡單來說,詞向量就是將單詞表示為一組數字,通常是高維空間中的點,每個單詞都有一個獨特的向量表示。

2.目的

為什么需要將單詞轉化為詞向量呢,因為他能夠捕捉單詞之間的語義相似性。如果數據庫中存放的是文字,那么我們可能需要去一個個比對,比對關鍵字相同的數量或兩個單詞是否完全一致。但是如果使用向量的方式進行表達,可以通過計算來獲取數據在語義層面上的相似度,且計算效率更高。

2.向量數據庫

1.定義及特點

檢索和管理高維向量數據的數據庫。隨著機器學習、自然語言處理(NLP)和計算機視覺等領域的發展,向量數據庫在處理復雜數據類型(如圖像、文本和音頻)的相似性搜索和推薦系統中變得越來越重要。
向量數據庫能夠有效存儲高維向量數據,且支持快速地相似性搜索,可以在大量向量中找到與查詢向量最相似的向量。最重要的一點就是向量數據庫使用特定的索引結構,加快檢索效率。

2.常見的向量數據庫

1.Pinecone
2.Faiss
3.Chroma

3.對RAG的意義

向量數據庫在RAG算法中通過高效存儲和檢索大規模文檔的向量表示,顯著提升了檢索相關文檔的效率和質量,支持大規模數據處理,加速生成過程,從而使生成的答案更加準確和相關,滿足實時性要求高的應用需求。

3.調用Embedding API

我使用的環境是Python3.11
需要安裝langchain_community庫
今天我嘗試了調用星火大模型的Embedding API,使用demo調用成功。
后續我嘗試使用SparkLLMTextEmbeddings對后面的向量化數據庫存儲的數據進行向量化操作。官方文檔如下圖所示:
在這里插入圖片描述

編寫代碼如下:
在這里插入圖片描述

4.數據讀取與處理

為了構建我的本地知識庫,需要對多種類型存儲的本地文檔進行處理,讀取本地文檔并通過前文描述的 Embedding 方法將本地文檔的內容轉化為詞向量來構建向量數據庫。后續我使用的是一個隨意的pdf文檔進行處理。

1.讀取pdf文檔

我們可以使用 LangChain 的 PyMuPDFLoader 來讀取知識庫的 PDF 文件。PyMuPDFLoader 是 PDF 解析器中速度最快的一種,結果會包含 PDF 及其頁面的詳細元數據,并且每頁返回一個文檔。
以下是我的一個代碼過程:
在這里插入圖片描述

讀取之后需要調用load()方法,是因為讀取的內容還是字符串類型的,為了后續的操作,我們需要調用load方法將類型轉換為document類型,才能進行后續操作。

2.數據清洗

我提供的pdf文檔中,只存在著少量的空行,因此這里的處理,我模仿文檔中的處理方式,將一些無關空行\n進行刪除。

在這里插入圖片描述

3.文檔分割

為什么需要文檔分割呢,假如我們將文檔作為大模型的一個輸入,并且希望大模型能利用輸入作為背景知識,解決一些專業領域內的知識,但是我們都知道對于token一般都會有限制,如果發送的token超過了大模型api輸入的最大token就會報錯。此時我們的文檔是十分龐大的,因此需要對文檔進行分割,將文檔按照固定的長度分為若干個chunk。
以下是文檔分割的代碼:
在這里插入圖片描述

其中的參數:

chunk_size:表示分割后每一塊chunk的大小。
chunk_overlap表示塊與塊之間的重疊大小。指的是分割后的每個chunk里包含多少上一個chunk結尾的內容,主要是為了保持每個chunk之間的上下文關聯性。比如chunk_overlap設置為2,此時上一塊chunk的結尾為aaaaa,那么下一塊chunk的開頭就是aabbbbbb。
Langchain 還提供了多種文檔分割方式,區別在怎么確定塊與塊之間的邊界、塊由哪些字符/token組成、以及如何測量塊大小。但是這些方法我還未來得及嘗試:
RecursiveCharacterTextSplitter(): 按字符串分割文本,遞歸地嘗試按不同的分隔符進行分割文本。
CharacterTextSplitter(): 按字符來分割文本。
MarkdownHeaderTextSplitter(): 基于指定的標題來分割markdown 文件。
TokenTextSplitter(): 按token來分割文本。
SentenceTransformersTokenTextSplitter(): 按token來分割文本
Language(): 用于 CPP、Python、Ruby、Markdown 等。
NLTKTextSplitter(): 使用 NLTK(自然語言工具包)按句子分割文本。
SpacyTextSplitter(): 使用 Spacy按句子的切割文本。

4.搭建向量數據庫

對于分割后的文檔,我們就可以將每一塊文檔轉換為向量,存儲到向量數據庫中了。這里我嘗試了Chroma數據庫。一開始我還不太了解Chroma數據庫,認為他是和MySQL那樣的數據庫類似,通過調研發現,他類似于sqlite,是一個可以存儲在本地的文件。以下是我搭建Chroma向量數據庫的代碼,首先需要pip install chroma:
在這里插入圖片描述

對于這一塊內容,我嘗試了一天,一直在報錯,還未搭建起來,通過搜索與調研。我嘗試更換Python環境,當我將Python環境更換到12時,又會出現數據庫無法安裝的報錯,嘗試安裝后,又會提示不存在Chroma庫。當我把環境換回11時,還是出現了key error報錯我認為主要的問題可能出現在Embedding那一塊。后序的話我打算嘗試改變Embedding API調用后,再繼續更新該筆記。

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

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

相關文章

Windows系統安裝NVM,實現Node.js多版本管理

目錄 一、前言 二、NVM簡介 三、準備工作 1、卸載Node 2、創建文件夾 四、下載NVM 五、安裝NVM 六、使用NVM 1、NVM常用操作命令 2、查看NVM版本信息 3、查看Node.js版本列表; 4、下載指定版本Node.js 5、使用指定版本Node.js 6、查看已安裝Node.js列…

深度學習賦能數據分析,聯蔚盤云引領業務革新

一、引言 隨著大數據時代的到來,深度學習技術正逐漸成為企業數據分析的新引擎。聯蔚盤云憑借其在深度學習領域的深厚積累,為企業提供高效、精準的數據分析解決方案,助力企業實現業務革新與增長。 二、深度學習與數據分析的完美結合 聯蔚盤…

【區塊鏈+基礎設施】國家健康醫療大數據科創平臺 | FISCO BCOS應用案例

在醫療領域,疾病數據合法合規共享是亟待解決的難題。一方面,當一家醫院對患者實施治療后,若患者轉到其 他醫院就醫,該醫院就無法判斷診療手段是否有效。另一方面,醫療數據屬于個人敏感數據,一旦被泄露或被惡…

一個能讓渲染性能提高100倍的辦法

GPU 光線追蹤是當今的熱門話題,所以讓我們來談談它!今天我們將光線追蹤一個單個球體。 使用片段著色器。 是的,我知道。并不特別花哨。你可以在 Shadertoy 上搜索并獲得數百個示例(https://www.shadertoy.com/results?querysphere)。甚至已…

在 Excel 中的單元格內開始一行新文本

若要在工作表單元格中開始一行新的文本或在文本的行或段之間添加間距,請按 AltEnter 插入換行符。 雙擊要插入換行符的單元格。 單擊所選單元格內想換行的位置。 按 AltEnter 插入換行符。

自研直播系統-直播系統實戰

文章目錄 1 流媒體基礎本文教程下載地址1.1 流媒體1.2 流式傳輸方式1.2.1 順序流式傳輸1.2.2 實時流式傳輸 1.3 流媒體傳輸協議1.3.1 rtmp協議1.3.2 HLS協議1.3.3 RTSP協議1.3.4 視頻流的對比 1.4 視頻編碼(codec)1.5 分辨率的規范分辨率簡介:1.5.2 分辨率單位 1.6 …

聊聊etsy平臺,一個年入百萬的項目

聊聊etsy平臺,一個年入百萬的項目 什么是etsy,這是怎樣一個平臺,怎樣盈利的?相信現在大家滿腦子都是這些疑問。 這個平臺也是無意間一個學員提到的,據說他朋友靠這個平臺年賺好幾百萬。苦于門檻太高,他也做不了。今天…

重磅發布|WAIC 2024最新活動日程安排完整發布!

WAIC 2024 將于 7 月在上海世博中心和世博展覽館舉行,論壇時間為 7 月 4 日至 6 日,展覽時間為 7 月 4 日至 7 日。會議涵蓋 AI 倫理治理、大模型、具身智能、投融資、教育人才等重點話題,體現 AI 向善等價值導向,9 位大獎得主和 …

Inscription Alliance的Denim協議發行首個聚合跨鏈銘文BTIA,計劃參與Mint注冊量達15萬

官方消息,由Inscription Alliance自主研發的創新性Denim協議發行首個聚合跨鏈銘文BTIA,并將于2024年7月19日公開Mint。Denim協議旨在解決當下銘文賽道流動性和互通性不足的痛點,基于該協議搭建的Denim Swap可以實現聚合各項協議和各條公鏈的彼…

數據結構常見圖算法

深度優先搜索 時間復雜度 領接矩陣表示 O( n2) 領接表表示 O(n+e) 空間復雜度 O(e) DFS與回溯法類似,一條路徑走到底后需要返回上一步,搜索第二條路徑。在樹的遍歷中,首先一直訪問到最深的節點,然后回溯到它的父節點,遍歷另一條路徑,直到遍歷完所有節點…

代碼隨想錄(回溯)

組合&#xff08;Leetcode77&#xff09; 思路 用遞歸每次遍歷從1-n得數&#xff0c;然后list來記錄是不是組合到k個了&#xff0c;然后這個每次for循環的開始不能和上一個值的開始重復&#xff0c;所以設置個遍歷開始索引startindex class Solution {static List<List<…

榮耀大橫評,睿藍7-450榮耀版卷出來的性價比之王

手握11萬左右預算,如何在市場內選出一輛合適自己的車?榮耀版車型無疑是當下的最佳答案。在眾多榮耀版車型中,比亞迪宋PLUS榮耀版EV520km領先型(后統稱宋PLUS榮耀版)、比亞迪元PLUS榮耀版430km領先型(后統稱元PLUS榮耀版)、比亞迪海豚PLUS榮耀版420km時尚版(后統稱海豚榮耀版)、…

中英雙語介紹美國的州:南卡羅來納州(South Carolina)

中文版 南卡羅來納州簡介 南卡羅來納州&#xff08;South Carolina&#xff09;位于美國東南部&#xff0c;是一個以其豐富的歷史、自然美景和多樣化的經濟而聞名的州。以下是對南卡羅來納州的詳細介紹&#xff0c;包括其地理位置、人口、經濟、教育、文化和主要城市等。 地…

【CSAPP】-binarybomb實驗

目錄 實驗目的與要求 實驗原理與內容 實驗設備與軟件環境 實驗過程與結果&#xff08;可貼圖&#xff09; 操作異常問題與解決方案 實驗總結 實驗目的與要求 1. 增強學生對于程序的機器級表示、匯編語言、調試器和逆向工程等方面原理與技能的掌握。 2. 掌握使用gdb調試器…

Python學習篇:PyCharm的基本使用教程(二)

目錄 1 前言 2 創建Python項目 3 創建Python文件 4 編寫 Hello World 并運行 5 PyCharm界面簡介 1 前言 PyCharm的使用貫穿整個Python的學習&#xff0c;所以單獨拿出來出教程不合適&#xff0c;說多了對于新手來說也還是不明白&#xff0c;這里我們先從學習開始前大家需…

【基礎算法總結】分治—快排

分治—快排 1.分治2.顏色分類3.排序數組4.數組中的第K個最大元素5.庫存管理 III 點贊&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;關注&#x1f496;&#x1f496; 你的支持是對我最大的鼓勵&#xff0c;我們一起努力吧!&#x1f603;&#x1f603; 1.分治 分治…

搜狐新聞HarmonyOS版本 push 推送開發

背景 搜狐新聞作為HarmonyOS的合作伙伴&#xff0c;于2023年12月成功上架鴻蒙單框架應用市場&#xff0c;成為首批鴻蒙應用矩陣的一員。 新聞類推送作為應用的重要組成部分&#xff0c;在二期規劃中&#xff0c;我們將推送功能列為核心功能模塊。本文將推送集成過程中的步驟和…

JAVA婦產科專科電子病歷系統源碼,前端框架:Vue,ElementUI

JAVA婦產科專科電子病歷系統源碼&#xff0c;前端框架&#xff1a;Vue&#xff0c;ElementUI孕產婦健康管理信息管理系統是一種將孕產婦健康管理信息進行集中管理和存儲的系統。通過建立該系統&#xff0c;有助于提高孕產婦健康管理的效率和質量&#xff0c;減少醫療事故發生的…

新華三通用大模型算力底座方案:為AI時代注入強大動力

在人工智能技術日新月異的今天&#xff0c;大模型作為推動AI進步的重要驅動力&#xff0c;是百行百業不斷追逐的熱點。大模型以其強大的泛化能力、卓越的模型效果和廣泛的應用場景&#xff0c;正改變著人工智能的未來。作為國內領先的ICT解決方案提供商&#xff0c;新華三集團憑…

Linux kfence使用與實現原理

0 背景 為了更好的檢測linux kernel中內存out-of-bounds、mem-corruption、use-after-free、invaild-free等問題&#xff0c;調研了kfence功能&#xff08;該功能在linux kernel 5.12引入&#xff09;&#xff0c;幫助研發更好的分析與定位這類內存錯誤的問題。 一、kfence介…