Elasticsearch:如何使用 Qwen3 來做向量搜索

在這篇文章中,我們將使用 Qwen3 來針對數據進行向量搜索。我們將對數據使用 qwen3 嵌入模型來進行向量化,并使用 Qwen3 來對它進行推理。在閱讀這篇文章之前,請閱讀之前的文章 “如何使用 Ollama 在本地設置并運行 Qwen3”。

安裝

Elasticsearch 及 Kibana

如果你還沒有安裝自己的 Elasticsearch 及 Kibana,那么請閱讀這篇文章 “使用 start-local 腳本在本地運行 Elasticsearch” 來進行安裝。在默認的情況下,他沒有 SSL 的配置:

$ curl -fsSL https://elastic.co/start-local | sh______ _           _   _      |  ____| |         | | (_)     | |__  | | __ _ ___| |_ _  ___ |  __| | |/ _` / __| __| |/ __|| |____| | (_| \__ \ |_| | (__ |______|_|\__,_|___/\__|_|\___|
-------------------------------------------------
🚀 Run Elasticsearch and Kibana for local testing
-------------------------------------------------??  Do not use this script in a production environment?? Setting up Elasticsearch and Kibana v9.1.2-arm64...- Generated random passwords
- Created the elastic-start-local folder containing the files:- .env, with settings- docker-compose.yml, for Docker services- start/stop/uninstall commands
- Running docker compose up --wait[+] Running 6/6? Network elastic-start-local_default             Created                                             0.1s ? Volume "elastic-start-local_dev-kibana"         Create...                                           0.0s ? Volume "elastic-start-local_dev-elasticsearch"  Created                                             0.0s ? Container es-local-dev                          Healthy                                            22.0s ? Container kibana-local-settings                 Exited                                             21.9s ? Container kibana-local-dev                      Healthy                                            31.9s 🎉 Congrats, Elasticsearch and Kibana are installed and running in Docker!🌐 Open your browser at http://localhost:5601Username: elasticPassword: u06Imqiu🔌 Elasticsearch API endpoint: http://localhost:9200
🔑 API key: QzNJQnA1Z0JiSkRyN2UwaUk3VFQ6dXFrdkFvRkt1UXlJX2Z1bm5qblpndw==Learn more at https://github.com/elastic/start-local

在我安裝完畢后,我得到的最新的 Elasticsearch 版本是 9.1.2。

寫入數據到 Elasticsearch

我們使用如下的代碼把數據寫入到 Elasticsearch:

elasticsearch_qwen3.py

from langchain_community.vectorstores import ElasticsearchStore
from langchain_community.embeddings import OllamaEmbeddings# Replace with your actual Elasticsearch endpoint
ELASTICSEARCH_URL = "http://localhost:9200"
INDEX_NAME = "my_embeddings_index"# Initialize Ollama embeddings (you can specify model if needed)
embeddings = OllamaEmbeddings(model="qwen3")# Create ElasticsearchStore index
vectorstore = ElasticsearchStore(embedding=embeddings,es_url=ELASTICSEARCH_URL,index_name=INDEX_NAME,es_user = "elastic",es_password = "u06Imqiu"
)# Example: Add documents to the index
str1 = "阿里巴巴(中國)有限公司成立于2007年03月26日,法定代表人蔣芳"
str2 = "百度是擁有強大互聯網基礎的領先AI公司。百度愿景是:成為最懂用戶,并能幫助人們成長的全球頂級高科技公司。于2000年1月1日在中關村創建了百度公司"docs = [ str1, str2 ]
vectorstore.add_texts(docs)print(f"Index '{INDEX_NAME}' created and documents added.")

我們需要安裝如下的 Python 包:

pip install langchain_community

在上面,我們使用 qwen3 嵌入模型把輸入的句子進行向量化。在這里,我們可以使用其它的任何嵌入模型。 運行以上的代碼:

python3 elasticsearh_qwen3.py
$ python3 elasticsearch_qwen3.py 
Index 'my_embeddings_index' created and documents added.

我們可以在 Kibana 中進行查看:

我們可以看到有兩個文檔被寫入。

這個是因為我們的模型?qwen3:8b 是 4096 維的。?

從上面我們也可以看出來所生成的向量。我們可以通過如下的命令來查看它的 mapping:

GET my_embeddings_index/_mapping
{"my_embeddings_index": {"mappings": {"properties": {"metadata": {"type": "object"},"text": {"type": "text","fields": {"keyword": {"type": "keyword","ignore_above": 256}}},"vector": {"type": "dense_vector","dims": 4096,"index": true,"similarity": "cosine","index_options": {"type": "bbq_hnsw","m": 16,"ef_construction": 100,"rescore_vector": {"oversample": 3}}}}}}
}

我們可以看到有一個叫做 textvector 的字段。

我們可以使用如下的命令來對它進行向量搜索:

elasticsearch_qwen3.py

from langchain_community.vectorstores import ElasticsearchStore
from langchain_community.embeddings import OllamaEmbeddings# Replace with your actual Elasticsearch endpoint
ELASTICSEARCH_URL = "http://localhost:9200"
INDEX_NAME = "my_embeddings_index"# Initialize Ollama embeddings (you can specify model if needed)
embeddings = OllamaEmbeddings(model="qwen3")# Create ElasticsearchStore index
vectorstore = ElasticsearchStore(embedding=embeddings,es_url=ELASTICSEARCH_URL,index_name=INDEX_NAME,es_user = "elastic",es_password = "u06Imqiu"
)if not vectorstore.client.indices.exists(index=INDEX_NAME):print(f"Index '{INDEX_NAME}' already exists.")# Example: Add documents to the indexstr1 = "阿里巴巴(中國)有限公司成立于2007年03月26日,法定代表人蔣芳"str2 = "百度是擁有強大互聯網基礎的領先AI公司。百度愿景是:成為最懂用戶,并能幫助人們成長的全球頂級高科技公司。于2000年1月1日在中關村創建了百度公司"docs = [ str1, str2 ]vectorstore.add_texts(docs,bulk_kwargs={"chunk_size": 300,"max_chunk_bytes": 4096})print(f"Index '{INDEX_NAME}' created and documents added.")results = vectorstore.similarity_search(query=" alibaba法定代表人是誰"# k=1# filter=[{"term": {"metadata.source.keyword": "tweet"}}],
)# print(results, len(results))for res in results:print(f"* {res.page_content}")

運行上面的代碼:

$ python3 elasticsearch_qwen3.py 
* 阿里巴巴(中國)有限公司成立于2007年03月26日,法定代表人蔣芳
* 百度是擁有強大互聯網基礎的領先AI公司。百度愿景是:成為最懂用戶,并能幫助人們成長的全球頂級高科技公司。于2000年1月1日在中關村創建了百度公司

我們把? query 改為:

results = vectorstore.similarity_search(query="中國的搜索引擎公司是哪個"# k=1# filter=[{"term": {"metadata.source.keyword": "tweet"}}],
)
$ python3 elasticsearch_qwen3.py 
* 百度是擁有強大互聯網基礎的領先AI公司。百度愿景是:成為最懂用戶,并能幫助人們成長的全球頂級高科技公司。于2000年1月1日在中關村創建了百度公司
* 阿里巴巴(中國)有限公司成立于2007年03月26日,法定代表人蔣芳

我們把搜索的 query 改為:

results = vectorstore.similarity_search(query="淘寶"# k=1# filter=[{"term": {"metadata.source.keyword": "tweet"}}],
)
$ python3 elasticsearch_qwen3.py 
* 阿里巴巴(中國)有限公司成立于2007年03月26日,法定代表人蔣芳
* 百度是擁有強大互聯網基礎的領先AI公司。百度愿景是:成為最懂用戶,并能幫助人們成長的全球頂級高科技公司。于2000年1月1日在中關村創建了百度公司
results = vectorstore.similarity_search(query="阿里巴巴的法人代表"# k=1# filter=[{"term": {"metadata.source.keyword": "tweet"}}],
)
$ python3 elasticsearch_qwen3.py 
* 阿里巴巴(中國)有限公司成立于2007年03月26日,法定代表人蔣芳
* 百度是擁有強大互聯網基礎的領先AI公司。百度愿景是:成為最懂用戶,并能幫助人們成長的全球頂級高科技公司。于2000年1月1日在中關村創建了百度公司

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

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

相關文章

Mybatis實現頁面增刪改查

一、改變路由警告 二、實現新增數據 1.UserMapper.xml 2.Controller層 注意:前端傳的是json對象,所以后臺也需要使用JSON 3.設置提交的表單 <el-dialog title"信息" v-model"data.formVisible" width"30%" destroy-on-close><el-form…

Rabbitmq+STS+discovery_k8s +localpv部署排坑詳解

#作者&#xff1a;朱雷 文章目錄一、部署排坑1.1. configmap配置文件1.2. pv文件1.3. sc文件1.4. serviceAccount文件1.5. headless-service文件1.6. sts文件二、RabbitMQ集群部署關鍵問題總結一、部署排坑 1.1. configmap配置文件 編輯cm.yaml 文件 apiVersion: v1 kind: C…

8.14 模擬

lc658. deque 定長滑窗class Solution { public:vector<int> findClosestElements(vector<int>& arr, int k, int x) {int n arr.size();int l 0, r 0;deque<int> dq;while (r < n) {dq.push_back(arr[r]);if (dq.size() > k) {// 核心&#xf…

JavaScript 核心語法與實戰筆記:從基礎到面試高頻題

一、面試高頻:apply 與 call 調用模式的區別 apply 和 call 的核心作用一致——改變函數內 this 的指向并立即執行函數,唯一區別是參數傳遞方式不同: apply:第二個參數需以數組形式傳入,格式為 函數名.apply(this指向, [參數1, 參數2, ...]) 示例:test.apply(param, [1,…

自動駕駛系統“測試”的“要求”與“規范體系”

讓數據真正閉環的&#xff0c;L4級自動駕駛仿真工具鏈-杭州千岑智能科技有限公司&#xff1a;RSim。 自動駕駛系統測試的要求與規范體系 自動駕駛技術作為汽車產業智能化轉型的核心領域&#xff0c;其測試驗證環節直接關系到技術的安全性和可靠性。隨著自動駕駛等級的提高&…

人工智能——CNN基礎:卷積和池化

一、CNN入門介紹1、卷積神經網絡&#xff08;Convolutional Neural Network&#xff0c;簡稱 CNN&#xff09;是一種專門為處理具有網格結構數據&#xff08;如圖像、音頻&#xff09;而設計的深度學習模型。在傳統的全連接神經網絡&#xff08;FNN&#xff09;中&#xff0c;輸…

適用監測農作物長勢和病蟲害的高光譜/多光譜相機有哪些?

面對農作物長勢分析和病蟲害監測&#xff0c;光譜技術在農業中得到了有效的應用。本篇文章給大家介紹下適合監測農作物長勢和病蟲害的高光譜/多光譜相機。農作物在遭受病蟲害侵襲時&#xff0c;其葉片的細胞結構、水分含量、色素組成會發生變化&#xff0c;從而導致農作物對不同…

深度學習——03 神經網絡(4)-正則化方法價格分類案例

4 正則化 4.1 概述模型擬合的3種狀態左邊&#xff08;Underfitting 欠擬合&#xff09;&#xff1a;模型太簡單&#xff0c;沒抓住數據規律。比如用直線硬套彎曲的數據&#xff0c;預測效果差&#xff0c;訓練誤差和測試誤差都大&#xff1b;中間&#xff08;Just right 擬合合…

java16學習筆記

Java16是一個重要的特性發布&#xff0c;它為JAVA帶來了許多JVM特定的更改和語言特定的更改。它遵循了自JavaJava10以來引入的Java發布步調&#xff0c;并于2021年3月發布&#xff0c;僅在Java15發布后的六個月內發布。 Java 16是一個非LTS版本。 338:Vector API (Incubator)…

useCallback 的陷阱:當 React Hooks 反而拖了后腿

我有一支技術全面、經驗豐富的小型團隊&#xff0c;專注高效交付中等規模外包項目&#xff0c;有需要外包項目的可以聯系我很多代碼庫到處都是 useCallback / useMemo。初衷是好的&#xff1a;減少不必要的重新渲染、穩定引用、提速。然而&#xff0c;用錯場景或鋪天蓋地地包一…

【IntelliJ IDEA】如何在pom.xml中去除maven中未使用的依賴

pom.xml中去除maven中未使用的依賴主要解決的問題一、怎么做&#xff1f;二、重點依賴類型解析說明三、什么時候做&#xff1f;四、有什么風險要注意的&#xff1f;五、補充一個快捷方法使用六、IDEA的terminal中如何才能使用命令mvn呢&#xff1f;主要解決的問題 你的項目中p…

安卓9.0系統修改定制化____關于自啟腳本的規律、編寫與實戰示例 推薦收藏【二】

在定制化ROM服務中,許多功能都需要通過自啟腳本來實現。上期博文詳細解析了腳本編寫的規律、權限設置以及常見錯誤踩坑的排查與修復方法,并逐行解釋了腳本代碼的含義。掌握這些基礎知識后,這期再以實例演示的過程來使我們使用更得心應手。。 通過博文了解?????? 1?…

選擇gpt-5還是claude-4-sonnect

了解我的朋友都知道&#xff0c;我是一個偽全棧工程師&#xff0c;一個人加AI編程工具打天下。 最近&#xff0c;gpt-5已經出來有一段時間了&#xff0c;cursor第一時間就支持了gpt-5模型&#xff0c;我第一時間就嘗試了gpt-5效果。說實話&#xff0c;gpt-5和claude-4-sonnect都…

自動化運維實驗(二)---自動識別設備,并導出配置

目錄 一、實驗拓撲 二、實驗目的 三、實驗步驟 實驗思路&#xff1a; 代碼部分&#xff1a; 四、實驗結果&#xff1a; 一、實驗拓撲 二、實驗目的 ssh遠程登錄后&#xff0c;識別設備類型&#xff08;華三、華為、銳捷、山石、飛塔、深信服等&#xff09;&#xff0c;再…

Matlab(4)初階繪圖

一、Basic plotting1.plot&#xff08;&#xff09;plot(x,y) &#xff1a;x圖片中點的橫坐標&#xff0c;y圖片中點的縱坐標plot(y) &#xff1a;y圖片中點的縱坐標&#xff0c;x圖片中點的橫坐標默認為1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5........plot(co…

服務器硬件電路設計之 I2C 問答(五):I2C 總線數據傳輸方向如何確定、信號線上的串聯電阻有什么作用?

在服務器硬件電路設計中&#xff0c;I2C 總線作為常用的串行通信總線&#xff0c;其數據傳輸方向的確定和信號線上串聯電阻的作用是關鍵知識點。?I2C 總線數據傳輸方向由主設備和從設備的角色以及讀寫位共同確定。主設備是發起通信的一方&#xff0c;從設備則是被尋址的對象。…

OpenBMC中C++策略模式架構、原理與應用

1. 策略模式概述 策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型設計模式&#xff0c;它允許在運行時動態選擇算法或行為&#xff0c;而無需修改客戶端代碼。 核心思想&#xff1a;封裝可互換的算法族&#xff0c;使它們可以獨立于使用它們的客戶端變化。 1.…

【python實用小腳本-187】Python一鍵批量改PDF文字:拖進來秒出新文件——再也不用Acrobat來回導

Python一鍵批量改PDF文字&#xff1a;拖進來秒出新文件——再也不用Acrobat來回導 PDF文字替換, 批量導出, 零依賴轉檔, 一鍵完成, 瑞士軍刀 故事開場&#xff1a;一把瑞士軍刀救了周五下班的你 周五 18:00&#xff0c;老板甩來 50 份合同 PDF&#xff1a; “把里面的‘2023’全…

汽車后霧燈色度難達標?OAS 軟件精準解決破瓶頸

汽車后霧燈案例分析簡介汽車后霧燈是車輛在能見度較低的霧、雨、雪等惡劣天氣條件下行駛時&#xff0c;向后方車輛傳遞警示信號的重要裝置&#xff0c;其性能直接關系到車輛的后方安全。根據規定&#xff0c;紅色信號燈需符合 CIE1931 標準&#xff0c;其色度坐標 X 值應在 0.6…

[系統架構設計師]架構設計專業知識(二)

[系統架構設計師]架構設計專業知識&#xff08;二&#xff09; 一.信息系統基礎知識 1.信息系統概述 信息系統功能&#xff1a;輸入&#xff0c;存儲&#xff0c;處理&#xff0c;輸出&#xff0c;控制 理查德.諾蘭&#xff1a; 初始&#xff0c;傳播&#xff0c;控制&#xff…