日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

使用Ollama和Go基于文本嵌入模型實現文本向量化

來源: 責編: 時間:2024-05-09 09:25:40 219觀看
導讀基于RAG+大模型的應用已經成為當前AI應用領域的一個熱門方向。RAG(Retrieval-Augmented Generation)將檢索和生成兩個步驟相結合,利用外部知識庫來增強生成模型的能力(如下圖來自網絡)。圖片在RAG賦能的大模型應用中,關

基于RAG+大模型的應用已經成為當前AI應用領域的一個熱門方向。RAG(Retrieval-Augmented Generation)將檢索和生成兩個步驟相結合,利用外部知識庫來增強生成模型的能力(如下圖來自網絡)。y9m28資訊網——每日最新資訊28at.com

圖片圖片y9m28資訊網——每日最新資訊28at.com

在RAG賦能的大模型應用中,關鍵的一步是將文本數據向量化后存儲在向量數據庫中(如上圖的紅框),以實現快速的相似度搜索,從而檢索與輸入查詢相關的文本片段,再將檢索到的文本輸入給生成模型生成最終結果。y9m28資訊網——每日最新資訊28at.com

本文是我學習開發大模型應用的一篇小記,探討的是如何使用Ollama和Go語言實現文本數據的向量化處理,這是開發基于RAG的大模型應用的前提和基礎。y9m28資訊網——每日最新資訊28at.com

要進行文本向量化,我們首先要了解一下文本向量化的方法以及發展。y9m28資訊網——每日最新資訊28at.com

縱觀文本向量化技術的發展歷程,我們可以看到從早期的詞袋模型(Bag-of-Words)、主題模型(Topic Models),到詞嵌入(Word Embedding)、句嵌入(Sentence Embedding),再到當前基于預訓練的文本嵌入模型(Pretrained Text Embedding Models),文本向量化的方法不斷演進,語義表達能力也越來越強。y9m28資訊網——每日最新資訊28at.com

但傳統的詞袋模型忽略了詞序和語義,主題模型又難以捕捉詞間的細粒度關系,詞嵌入模型(如Word2Vec、GloVe)雖然考慮了詞的上下文,但無法很好地表征整個句子或文檔的語義。近年來,隨著預訓練語言模型(如BERT、GPT等)的崛起,出現了一系列強大的文本嵌入模型,它們在大規模語料上進行預訓練,能夠生成高質量的句子/文檔嵌入向量,廣泛應用于各類NLP任務中。下圖是抱抱臉(https://huggingface.co/)的最新文本嵌入模型的排行榜[1]:y9m28資訊網——每日最新資訊28at.com

圖片圖片y9m28資訊網——每日最新資訊28at.com

目前,基于大型預訓練語言模型的文本嵌入已成為主流方法。這些模型在大規模無監督語料上預訓練,學習到豐富的語義知識,生成的文本嵌入能較好地編碼詞語、短語和句子等多個層面的語義關系。Nomic AI[2]等組織發布了多種優秀的預訓練文本嵌入模型,應用效果獲得了較大提升。這種基于預訓練的文本嵌入模型來實現文本數據向量化的方法也緩解了Go語言生態中文本向量化的相關庫相對較少的尷尬,Gopher可以在預訓練文本嵌入模型的幫助下將文本向量化。接下來,我們就來看看如何基于Ollama和Go基于文本嵌入模型實現文本向量化。y9m28資訊網——每日最新資訊28at.com

考慮到實驗環境資源有限,以及Ollama對Text Embedding模型的支持[3],這里我選擇了Nomic AI開源發布的nomic-embed-text v1.5模型[4],雖然在抱抱臉上它的排名并不十分靠前。y9m28資訊網——每日最新資訊28at.com

下面我們就用ollama下載nomic-embed-text:v1.5模型:y9m28資訊網——每日最新資訊28at.com

$ollama pull nomic-embed-text:v1.5pulling manifestpulling manifestpulling 970aa74c0a90... 100% ▕██████████████████████████████████████████████████████████████████▏ 274 MB                         pulling c71d239df917... 100% ▕██████████████████████████████████████████████████████████████████▏  11 KB                         pulling ce4a164fc046... 100% ▕██████████████████████████████████████████████████████████████████▏   17 B                         pulling 31df23ea7daa... 100% ▕██████████████████████████████████████████████████████████████████▏  420 B                         verifying sha256 digestwriting manifestremoving any unused layerssuccess

算上之前的Llama3模型,目前本地已經有了兩個模型:y9m28資訊網——每日最新資訊28at.com

$ollama listNAME                       ID              SIZE      MODIFIED      llama3:latest              71a106a91016    4.7 GB    2 weeks ago      nomic-embed-text:v1.5      0a109f422b47    274 MB    3 seconds ago

不過與llama3的對話模型不同,nomic-embed-text:v1.5是用于本文嵌入的模型,我們不能使用命令行來run該模型并通過命令行與其交互:y9m28資訊網——每日最新資訊28at.com

$ollama run nomic-embed-text:v1.5Error: embedding models do not support chat

一旦模型下載成功,我們就可以通過Ollama的HTTP API來訪問該模型了,下面是通過curl將一段文本向量化的命令:y9m28資訊網——每日最新資訊28at.com

$curl http://localhost:11434/api/embeddings -d '{  "model": "nomic-embed-text:v1.5",       "prompt": "The sky is blue because of Rayleigh scattering"}'{"embedding":[-1.246808409690857,0.10344144701957703,0.6935597658157349,-0.6157534718513489,0.4244955778121948,-0.7677388191223145,1.4136837720870972,0.012530215084552765,0.007208258379250765,-0.858286440372467,1.02878999710083,0.6512939929962158,1.0005667209625244,1.4231345653533936,0.30222395062446594,-0.4343869090080261,-1.358498215675354,-1.0671193599700928,0.3035725951194763,-1.5876567363739014,-0.9811925888061523,-0.31766557693481445,-0.32180508971214294,0.5726669430732727,-1.4187577962875366,-0.23533311486244202,-0.3387795686721802,0.02435961365699768,-0.9517765641212463,0.4120883047580719,-0.4619484841823578,-0.6658303737640381,0.010240706615149975,0.7687620520591736,0.9147310853004456,-0.18446297943592072,1.6336615085601807,1.006791353225708,-0.7928107976913452,0.3333768844604492,-0.9133707880973816,-0.8000166416168213,-0.41302260756492615,0.32945334911346436,0.44106146693229675,-1.3581880331039429,-0.2830675542354584,-0.49363842606544495,0.20744864642620087,0.039297714829444885,-0.6562637686729431,-0.24374787509441376,-0.22294744849205017,-0.664574921131134,0.5489196181297302,1.0000559091567993,0.45487216114997864,0.5257866382598877,0.25838619470596313,0.8648120760917664,0.32076674699783325,1.79911208152771,-0.23030932247638702,0.27912014722824097,0.6304138898849487,-1.1762936115264893,0.2685599625110626,-0.6646256446838379,0.332780659198761,0.1742674708366394,-0.27117523550987244,-1.1485087871551514,0.07291799038648605,0.7712352275848389,...,]}

注意:如果curl請求得到的應答是類似{"error":"error starting the external llama server: exec: "ollama_llama_server": executable file not found in $PATH "},可以嘗試重啟Ollama服務來解決:systemctl restart ollama。y9m28資訊網——每日最新資訊28at.com

Ollama沒有提供sdk,我們就基于langchaingo[6]的ollama包訪問ollama本地加載的nomic-embed-text:v1.5模型,實現文本的向量化。下面是示例的源碼:y9m28資訊網——每日最新資訊28at.com

// textembedding.gopackage mainimport (        "context"        "fmt"        "log"        "github.com/tmc/langchaingo/llms/ollama")func main() {        llm, err := ollama.New(ollama.WithModel("nomic-embed-text:v1.5"))        if err != nil {                log.Fatal(err)        }        ctx := context.Background()        inputText := "The sky is blue because of Rayleigh scattering"        result, err := llm.CreateEmbedding(ctx, []string{inputText})        if err != nil {                log.Fatal(err)        }        fmt.Printf("%#v/n", result)        fmt.Printf("%d/n", len(result[0]))}

更新一下依賴:y9m28資訊網——每日最新資訊28at.com

# go mod tidygo: finding module for package github.com/tmc/langchaingo/llms/ollamago: toolchain upgrade needed to resolve github.com/tmc/langchaingo/llms/ollamago: github.com/tmc/langchaingo@v0.1.9 requires go >= 1.22.0; switching to go1.22.3go: downloading go1.22.3 (linux/amd64)go: finding module for package github.com/tmc/langchaingo/llms/ollamago: found github.com/tmc/langchaingo/llms/ollama in github.com/tmc/langchaingo v0.1.9go: downloading github.com/stretchr/testify v1.9.0go: downloading github.com/pkoukk/tiktoken-go v0.1.6go: downloading gopkg.in/yaml.v3 v3.0.1go: downloading github.com/davecgh/go-spew v1.1.1go: downloading github.com/pmezard/go-difflib v1.0.0go: downloading github.com/google/uuid v1.6.0go: downloading github.com/dlclark/regexp2 v1.10.0

我本地的Go是1.21.4版本,但langchaingo需要1.22.0版本及以上,這里考慮向前兼容性[7],go下載了go1.22.3。y9m28資訊網——每日最新資訊28at.com

接下來運行一下上述程序:y9m28資訊網——每日最新資訊28at.com

$go run textembedding.go[][]float32{[]float32{-1.2468084, 0.10344145, 0.69355977, -0.6157535, 0.42449558, -0.7677388, 1.4136838, 0.012530215, 0.0072082584, -0.85828644, 1.02879, 0.651294, 1.0005667, 1.4231346, 0.30222395, -0.4343869, -1.3584982, -1.0671194, 0.3035726, -1.5876567, -0.9811926, -0.31766558, -0.3218051, 0.57266694, -1.4187578, -0.23533311, -0.33877957, 0.024359614, -0.95177656, 0.4120883, -0.46194848, -0.6658304, 0.010240707, 0.76876205, 0.9147311, -0.18446298, 1.6336615, 1.0067914, -0.7928108, 0.33337688, -0.9133708, -0.80001664, -0.4130226, 0.32945335, 0.44106147, -1.358188, -0.28306755, -0.49363843, 0.20744865, 0.039297715, -0.65626377, -0.24374788, -0.22294745, -0.6645749, 0.5489196, 1.0000559, 0.45487216, 0.52578664, 0.2583862, 0.8648121, 0.32076675, 1.7991121, -0.23030932, 0.27912015, 0.6304139, -1.1762936, 0.26855996, -0.66462564, 0.33278066, 0.17426747, -0.27117524, -1.1485088, 0.07291799, 0.7712352, -1.2570909, -0.6230442, 0.02963586, -0.4936177, -0.014295651, 0.5730515, ... ,  -0.5260737, -0.44808808, 0.9352375}}768

我們看到輸入的文本成功地被向量化了,我們輸出了這個向量的維度:768。y9m28資訊網——每日最新資訊28at.com

注:文本向量維度的常見的值有200、300、768、1536等。y9m28資訊網——每日最新資訊28at.com

我們看到,基于Ollama加載的預訓練文本嵌入模型,我們可以在Go語言中實現高效優質的文本向量化。將文本數據映射到語義向量空間,為基于RAG的知識庫應用打下堅實的基礎。有了向量后,我們便可以將其存儲在向量數據庫中備用,在后續的文章中,我會探討向量數據庫寫入與檢索的實現方法。y9m28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-87489-0.html使用Ollama和Go基于文本嵌入模型實現文本向量化

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 系統設計 | 多語言設計,你學會了嗎?

下一篇: SpringBoot一個非常強大的數據綁定類

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲女同同性videoxma| 男人的天堂亚洲| 亚洲一区二区三区午夜| 亚洲欧美大片| 久久xxxx精品视频| 中文一区在线| 欧美伊人精品成人久久综合97 | 久久精品在这里| 99精品欧美一区| 亚洲男人的天堂在线观看| 欧美专区亚洲专区| 欧美激情免费观看| 国产精品视频自拍| 亚洲国产成人精品久久久国产成人一区 | 国产日韩欧美制服另类| 国产精品久久久久久久久动漫| 国产午夜精品理论片a级大结局| 亚洲国产精品综合| 午夜精品久久久久99热蜜桃导演| 麻豆精品视频在线观看视频| 欧美视频一区二区三区…| 狠狠88综合久久久久综合网| 一本一本久久| 久久精品久久综合| 欧美午夜片在线观看| 欧美日韩亚洲一区二区三区在线| 国产精品性做久久久久久| 国产精品视频一| 亚洲第一精品久久忘忧草社区| 亚洲最新色图| 久久久av水蜜桃| 欧美色一级片| 亚洲激情一区二区三区| 欧美夜福利tv在线| 欧美人成网站| 黄色成人片子| 亚洲欧美日本另类| 欧美激情一区二区三区不卡| 欧美成人精品在线播放| 国产精品日韩二区| 亚洲三级免费电影| 久久成人羞羞网站| 欧美色综合天天久久综合精品| 一区二区在线看| 亚洲午夜久久久久久久久电影网| 猫咪成人在线观看| 国产人成精品一区二区三| 亚洲美女在线看| 久久天天狠狠| 国产日韩欧美亚洲| 精品99一区二区三区| 亚洲一区免费网站| 久久不射网站| 欧美午夜片欧美片在线观看| 国产精品伦一区| 亚洲日本免费电影| 久久久久国产精品一区| 国产精品嫩草久久久久| 国产一区二区三区成人欧美日韩在线观看| 日韩亚洲综合在线| 男女av一区三区二区色多| 国产亚洲精品7777| 亚洲男人第一av网站| 欧美在线视频播放| 国产精品久久久久天堂| 99精品视频一区二区三区| 麻豆国产精品va在线观看不卡 | 亚洲国产三级| 狂野欧美激情性xxxx欧美| 国产一区二区在线观看免费| 亚洲欧美激情精品一区二区| 欧美日韩一二三四五区| 亚洲毛片一区| 欧美激情一区二区三区| 国产精品免费aⅴ片在线观看| 亚洲伦理久久| 欧美激情一区在线| 亚洲国产综合在线| 免费成人你懂的| 亚洲国产精品热久久| 久久一区二区三区超碰国产精品| 红桃视频一区| 久久一区二区精品| 一区在线观看| 亚洲一区久久久| 国产精品啊v在线| 一区二区三区视频在线播放| 欧美日韩国产免费观看| 日韩一级片网址| 欧美连裤袜在线视频| 亚洲伦理久久| 欧美三级乱码| 亚洲曰本av电影| 国产精品爽黄69| 欧美亚洲综合在线| 好吊妞**欧美| 免费亚洲电影在线| 日韩亚洲欧美成人| 久久亚洲欧美| 亚洲第一免费播放区| 欧美高清hd18日本| 亚洲韩国日本中文字幕| 欧美激情久久久久| 9国产精品视频| 国产精品久久国产精品99gif| 亚洲专区欧美专区| 亚洲精品系列| 国产婷婷成人久久av免费高清 | 亚洲视频二区| 欧美一区国产二区| 老司机一区二区三区| 麻豆精品传媒视频| 国产精品久久77777| 久久久噜噜噜久久久| 日韩亚洲欧美在线观看| 亚洲精品中文字幕在线观看| 国产精品久久久久99| 欧美一级网站| 午夜日韩电影| 在线不卡中文字幕| 亚洲国产日韩欧美综合久久 | 亚洲日本一区二区| 欧美一区二区免费视频| 欧美亚一区二区| 亚洲精品资源| 欧美高清你懂得| 国产一区二三区| 午夜久久一区| 在线视频欧美日韩精品| 亚洲午夜久久久| 国产日韩欧美在线一区| 精品999成人| 中文日韩在线| 久久嫩草精品久久久精品| 国产精品免费在线 | 狠狠久久五月精品中文字幕| 国产精品99久久久久久www| 亚洲欧美视频在线| 欧美一区二区日韩一区二区| 欧美精品一区二区视频| 国产精品乱码一区二区三区| 美女啪啪无遮挡免费久久网站| 国产精品色婷婷久久58| 亚洲欧美怡红院| 国产一区二区三区四区五区美女| 国产女人aaa级久久久级| 一区二区不卡在线视频 午夜欧美不卡在 | 国产欧美亚洲精品| 亚洲欧美视频在线观看| 在线观看欧美日韩国产| 国产精品qvod| 免费成人av资源网| 亚洲欧美日韩国产一区| 91久久国产综合久久91精品网站| 国产精品美女主播| 欧美成人在线免费观看| 欧美一区二区三区电影在线观看| 亚洲日韩欧美视频一区| 欧美日本中文字幕| 久久精品国产精品亚洲| 亚洲视频大全| 亚洲国产精品一区制服丝袜| 国产欧美日韩91| 欧美日韩一区二区三| 久久在线精品| 欧美一区二区三区视频免费播放 | 欧美精品97| 亚洲欧美日韩国产精品| 国产精品国产三级国产a| 欧美成人情趣视频| 欧美在线亚洲在线| 亚洲午夜精品久久久久久浪潮 | 一色屋精品视频免费看| 国产精品亚洲产品| 欧美日韩国产在线播放| 亚洲综合欧美日韩| 国产日韩欧美中文| 欧美日韩精品高清| 美女视频黄 久久| 性色av一区二区怡红| 在线高清一区| 国产性猛交xxxx免费看久久| 欧美精品在线观看播放| 久久综合一区| 久久九九久久九九| 日韩一级片网址| 国产日韩欧美在线播放| 欧美福利视频在线| 卡通动漫国产精品| 一本色道久久综合亚洲精品按摩| 一区在线影院| 韩国女主播一区二区三区| 欧美寡妇偷汉性猛交| 久久国产毛片| 欧美淫片网站| 午夜免费电影一区在线观看| 亚洲婷婷在线| 中文日韩在线视频| 一区二区欧美在线观看| 亚洲精品一区久久久久久| 最新亚洲一区| 亚洲黄色影院| 亚洲精品婷婷| 亚洲乱码国产乱码精品精 |