在本地電腦中部署阿里 Qwen3 大模型及連接到 Elasticsearch

在今天的文章中,我將參考文章 “使用 Elastic 和 LM Studio 的 Herding Llama 3.1” 來部署 Qwen3 大模型。據測評,這是一個非常不錯的大模型。我們今天嘗試使用 LM Studio 來對它進行部署,并詳細描述如何結合?Elasticsearch 來對它進行使用。

關于 LM Studio

LM Studio 是本地大型語言模型 (LLM) 的瀏覽器/IDE,專注于使本地 AI 變得有價值且易于訪問,同時為開發人員提供構建平臺。

用戶考慮本地 LLMs 的原因有很多,但其中最主要的是能夠在不放棄對你或你公司的數據主權的情況下利用 AI。其他原因包括:

  • 增強數據隱私和安全性
  • 減少威脅檢測的延遲
  • 獲得運營優勢
  • 在現代威脅環境中保護你的組織

LM Studio 提供統一的界面,用于本地發現、下載和運行領先的開源模型,如 Llama 3.1、Phi-3 和 Gemini。使用 LM Studio 本地托管的模型允許 SecOps 團隊使用 Elastic AI Assistant 來幫助提供警報分類、事件響應等方面的情境感知指導。所有這些都不需要組織連接到第三方模型托管服務。

在本地電腦中部署阿里 Qwen3 大模型及連接到 Elasticsearch

安裝 Elasticsearch 及 Kibana

如果你還沒有安裝好自己的 Elasticsearch 及 Kibana,那么我們可以參考如下的文章來進行安裝:

  • 如何在 Linux,MacOS 及 Windows 上進行安裝 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安裝 Elastic 棧中的 Kibana

特別值得注意的是,我們選擇 “Elastic Stack 8.x/9.x 安裝” 安裝指南。在本次的練習中,我們將使用最新的 Elastic Stack 9.0.1。

我們記下上面的密碼,并在下面的代碼中進行使用。

另外,為了能夠使得我們避免警告,我們在 Kibana 中針對?xpack.encryptedSavedObjects.encryptionKey 進行設置。這個也是我們需要使用 Playground 所必須的。詳細布置也可以參考文章 “Elasticsearch:使用 Playground 與你的 PDF 聊天”。 我們在 terminal 中打入如下的命令:

bin/kibana-encryption-keys generate
$ pwd
/Users/liuxg/elastic/kibana-9.0.1
$ bin/kibana-encryption-keys generate
## Kibana Encryption Key Generation UtilityThe 'generate' command guides you through the process of setting encryption keys for:xpack.encryptedSavedObjects.encryptionKeyUsed to encrypt stored objects such as dashboards and visualizationshttps://www.elastic.co/guide/en/kibana/current/xpack-security-secure-saved-objects.html#xpack-security-secure-saved-objectsxpack.reporting.encryptionKeyUsed to encrypt saved reportshttps://www.elastic.co/guide/en/kibana/current/reporting-settings-kb.html#general-reporting-settingsxpack.security.encryptionKeyUsed to encrypt session informationhttps://www.elastic.co/guide/en/kibana/current/security-settings-kb.html#security-session-and-cookie-settingsAlready defined settings are ignored and can be regenerated using the --force flag.  Check the documentation links for instructions on how to rotate encryption keys.
Definitions should be set in the kibana.yml used configure Kibana.Settings:
xpack.encryptedSavedObjects.encryptionKey: 6f1fdc6da9e4cdb8558fc8b4d3fe1048
xpack.reporting.encryptionKey: a22c866f356cda8097ad1b9befc56a25
xpack.security.encryptionKey: f4d6361ebd74b385c6ed722244985321

我們必須把正在運行的 Kibana 停止再運行上面的命令。我們把上面最后面顯示的設置拷貝到 config/kibana.yml 文件的最后面,并保存。然后重新啟動 Kibana。

啟動白金試用功能

為了能夠創建 OpenAI 連接器,我們需要打開白金版試用功能:

這樣我們的白金版試用功能就設置好了。有了這個我們在下面就可以創建 OpenAI 的連接器了。

安裝 ES 向量模型

在我們的搜索中,我們需要使用一個嵌入向量模型來針對數據進行向量化。在本次練習中,我們使用 ES。這也是 Elasticsearch 自帶的模型。我們需要對它進行配置:

從上面的顯示中,我們已經成功地把 .multilingual-e5-small?模型部署到我們的 Elasticsearch 中了。

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

GET _inference

我們可以看到一個叫做?.multilingual-e5-small-elasticsearch 的 inference id 已經生成。

如何設置 LM Studio

下載并安裝最新版本的 LM Studio。

在下載完畢后,經過 checksum 驗證,我們最終可以看到上面的畫面。

在 Discover 界面搜索 “Qwen”,并下載安裝。如上所示,Qwen3 共有 18.45?GB,所以在下載之前,確保你有足夠的電腦硬盤容量來對它進行安裝。我們點擊 “Use in New Chat”:

在上面,我們提出問題 “中國最長的河流是哪個?”。它最終給出了答案:

我們接下來驗證一下它的英文能力:

What is the longest river in China?

很有意思的是它給出的結果是以中文的形式。這個是和 DeepSeek 及 ChatGPT 有不同的地方。通常在 DeepSeek 中,如果我們的提問是以英文形式的,那么你得到的答案就是英文格式的。

注意:由于模型是在本地電腦部署的。這個依賴于你自己的電腦算力。有時給出的結果有點慢,但是需要大家的耐心等待!

我們接下來進入 “My Models" 來進行驗證:

我們可以看到 qwen 已經被成功地安裝了。

我們接下來打開 Developer 窗口,我們可以看到 qwen 的接口 API:

我們將在下面的練習中進行使用。同時我們注意到它的接口是以 Open AI 的格式來進行提供的。我們對本地服務器做如下的配置:

打開上面的兩個配置:

我們還需要同時打開這個本地服務器:

一旦打開,我們可以看到日志,并看到服務器的狀態已經發生改變。

我們可以通過如下的方式來獲得本地電腦的 IP 地址:

ifconfig | grep inet | grep 192
$ ifconfig | grep inet | grep 192inet 192.168.101.158 netmask 0xffffff00 broadcast 192.168.101.255

:如果你的 qwen3 不是和你自己的 Elasticsearch 處于同一個機器上,那么你需要使用到上面的私有地址(在同一局域網里)

我們可以通過如下的命令來驗證我們的服務器接口:

拷貝上面的 cURL 命令:

curl http://localhost:1234/v1/chat/completions \-H "Content-Type: application/json" \-d '{"model": "qwen/qwen3-32b","messages": [{ "role": "system", "content": "Always answer in rhymes. Today is Thursday" },{ "role": "user", "content": "What day is it today?" }],"temperature": 0.7,"max_tokens": -1,"stream": false
}'

我們可以直接在電腦的 terminal 中打入上面的命令:

我們得到了一個相關的結果。我們接下來稍微修改一下我們的問題:

curl http://localhost:1234/v1/chat/completions \-H "Content-Type: application/json" \-d '{"model": "qwen/qwen3-32b","messages": [{ "role": "system", "content": "You are a helpful AI Assistant that uses the following context to answer questions only use the following context. \n\nContext:  小明今天早上和媽媽一起去上學"},{ "role": "user", "content": "小明今天和誰一起去上學的?" }],"temperature": 0.7,"max_tokens": -1,"stream": false
}'

很顯然,它具備一定的推理能力。我們得到了我們想要的答案。

在 Kibana 中創建連接到 Qwen 的連接器

我們按照如下的步驟來進行:

使用以下設置配置連接器:

  • Connector name:qwen3
    • 選擇 OpenAI ?provider:other (OpenAI Compatible Service)
    • URL:http://localhost:1234/v1/chat/completions
      • 調整到你的 qwen3 的正確路徑。如果你從容器內調用,請記住替換 host.docker.internal 或等效項
  • 默認模型:qwen/qwen3-32b
  • API 密鑰:編造一個,需要輸入,但值無關緊要

點擊 Save 按鈕:

就這樣,我們成功地創建了一個叫做 qwen3 的 OpenAI 連接器。

將嵌入向量的數據導入 Elasticsearch

如果你已經熟悉 Playground 并設置了數據,則可以跳至下面的 Playground 步驟,但如果你需要一些快速測試數據,我們需要確保設置了 _inference API。從 8.17 開始,機器學習分配是動態的,因此要下載并打開 e5 多語言密集向量,我們只需在 Kibana Dev 工具中運行以下命令即可。

GET /_inferencePOST /_inference/text_embedding/.multilingual-e5-small-elasticsearch
{"input": "are internet memes about deepseek sound investment advice?"
}

如果你還沒有這樣做,這將觸發從 Elastic 的模型存儲庫下載 e5 模型。在上面的安裝部分,我們已經成功地部署了 es 模型,所以執行下面的命令時,不會觸發下載模型。我們從右邊的輸出中可以看到文字被轉換后的向量表示。

接下來,讓我們加載一本公共領域的書作為我們的 RAG 上下文。這是從 Project Gutenberg 下載 “愛麗絲夢游仙境” 的地方:鏈接。將其保存為 .txt 文件。

$ pwd
/Users/liuxg/data/alice
$ wget https://www.gutenberg.org/cache/epub/11/pg11.txt
--2025-02-10 16:59:19--  https://www.gutenberg.org/cache/epub/11/pg11.txt
Resolving www.gutenberg.org (www.gutenberg.org)... 152.19.134.47
Connecting to www.gutenberg.org (www.gutenberg.org)|152.19.134.47|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 174357 (170K) [text/plain]
Saving to: ‘pg11.txt’pg11.txt                   100%[=====================================>] 170.27K   304KB/s    in 0.6s    2025-02-10 16:59:21 (304 KB/s) - ‘pg11.txt’ saved [174357/174357]

等下載完文件后,我們可以使用如下的方法來上傳文件到 Elasticsearch 中:

?

我們或者使用如下的方法:

?

?

?

選擇剛剛下好的文件:

?

?

?

?

?

?

?

當加載和推理完成后,我們就可以前往 Playground 了。

在 Playground 中測試 RAG

在 Kibana 中導航到 Elasticsearch > Playground。可以在此處找到 Playground 的詳細指南。

?

在我們的 Playground 設置中,我們輸入了以下系統提示 “You are an assistant for question-answering tasks using relevant text passages from the book Alice in wonderland - 你是使用《愛麗絲夢游仙境》一書中的相關文本段落進行問答任務的助手”,并接受其他默認設置。

對于 “Who was at the tea party? - 誰參加了茶話會?”這個問題

?

我們嘗試使用中文來提問:

誰參加了茶話會?

從上面的輸出中我們看到了我們希望的答案。我們可以詳細查看原文,在如下的位置可以看到我們想要的答案:

?

非常好! Qwen3 能夠針對我們的英文和中文進行回答問題。 給出了我們想要的中文答案。

如果大家對如何使用代碼來實現上述查詢,你可以點擊 Playground 的右上角的 View code 來得到一個初始的代碼。然后我們可以做響應的修改。在這里我就不贅述了。對于感興趣的開發者,可以參考我的另外一篇文章 “Elasticsearch:在 Elastic 中玩轉 DeepSeek R1 來實現 RAG 應用” 來查看實現的方法。

祝大家學習 Qwen3 愉快!

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

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

相關文章

【設計模式】2.策略模式

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 商場收銀軟件為例 1. 基礎版 total 0def click_ok(price,num):tot price * numtotal totprint(合計:, total)增加打折 total 0def cli…

c++中的輸入輸出流(標準IO,文件IO,字符串IO)

目錄 &#xff08;1&#xff09;I/O概述 I/O分類 不同I/O的繼承關系 不同I/O對應的頭文件 &#xff08;2&#xff09;iostream 標準I/O流 iostream頭文件中的IO流對象 iostream頭文件中重載了<<和>> 緩沖區示意圖 標準輸入流 cin用法 cin&#xff1a;按空…

人工智能學習06-循環

人工智能學習概述—快手視頻 人工智能學習06-循環—快手視頻

【電路】阻抗匹配

&#x1f4dd; 阻抗匹配 一、什么是阻抗匹配&#xff1f; 阻抗匹配&#xff08;Impedance Matching&#xff09;是指在電子系統中&#xff0c;為了實現最大功率傳輸或最小信號反射&#xff0c;使信號源、傳輸線與負載之間的阻抗達到一種“匹配”狀態的技術。 研究對象&#x…

【vue】Uniapp 打包Android 文件選擇上傳問題詳解~

需求 uniapp兼容android app&#xff0c;pc&#xff0c;h5的文件選擇并上傳功能。 需要支持拍照和相冊選擇&#xff0c;以及選擇其他類型文件上傳~ 實踐過程和問題 開始使用uni-file-picker組件 以為很順利&#xff0c;android模擬器測試…… 忽略了平臺兼容性提示~&#…

Python:操作 Excel 格式化

??Python 操作 Excel 格式化完整指南(openpyxl 與 xlsxwriter 雙方案) 在數據處理和報表自動化中,Python 是一把利器,尤其是配合 Excel 文件的讀寫與格式化處理。本篇將詳細介紹兩大主流庫: openpyxl:適合讀取與修改現有 Excel 文件xlsxwriter:適合創建新文件并進行復…

Prompt Enginering(提示工程)先進技術

前沿 CoT&#xff08;Chain-of-Thought&#xff09;和 ReACT&#xff08;Reasoning and Acting&#xff09;是兩種先進的 Prompt Engineering&#xff08;提示工程&#xff09; 技術&#xff0c;旨在提升大語言模型&#xff08;LLM&#xff09;的推理、規劃和執行能力。 CoT&a…

【C++系列】模板類型特例化

1. C模板類型特例化介紹 ??定義??&#xff1a;模板類型特例化&#xff08;Template Specialization&#xff09;是C中為模板的特定類型提供定制實現的機制&#xff0c;允許開發者對通用模板無法處理的特殊類型進行優化或特殊處理。 ??產生標準??&#xff1a; C98/03…

AI數據分析在體育中的應用:技術與實踐

在現代體育競技領域&#xff0c;"數據驅動"已不再是一個遙遠的概念。尤其隨著人工智能&#xff08;AI&#xff09;和大數據分析的不斷成熟&#xff0c;從職業俱樂部到賽事直播平臺&#xff0c;從運動員訓練到球迷觀賽體驗&#xff0c;AI正以前所未有的方式滲透并改變…

計數思想-眾數

11203-眾數 題目描述(Description) 眾數是指在一組數據中&#xff0c;出現次數最多的數。例如&#xff1a;1, 1, 3 中出現次數最多的數為 1&#xff0c;則眾數為 1。 給定一組數&#xff0c;你能求出眾數嗎&#xff1f; 輸入格式(Format Input) 第 1 行輸入一個整數 n (1 &…

【Go語言基礎【20】】Go的包與工程

文章目錄 零、概述一、包基礎1、包的核心作用2、包的聲明與結構2.1、 包聲明&#xff08;Package Declaration&#xff09;2.2、 包的目錄結構&#xff08;工程視角&#xff09; 3、包的導入與調用3.1、導入包&#xff08;Import Packages&#xff09;3.2、 調用包成員3.3、 導…

《C++初階之入門基礎》【命名空間 + 輸入輸出 + 缺省參數 + 函數重載】

【命名空間 輸入&輸出 缺省參數 函數重載】目錄 前言&#xff1a;---------------hello world---------------比較C語言和C的第一個程序&#xff1a;hello word ---------------命名空間---------------什么是命名空間&#xff1f;怎么使用命名空間&#xff1f;怎么定義…

java綜合項目開發一課一得

文章目錄 Java 綜合項目課程學習&#xff1a;探索與成長之路一、課程初體驗&#xff1a;從理論走向實踐&#xff08;一&#xff09;系統學習 Java 核心理論知識&#xff08;二&#xff09;開啟首個實踐項目 —— 圖書管理系統 二、項目攻堅&#xff1a;挑戰與突破&#xff08;一…

JuiceFS v1.3-Beta2:集成 Apache Ranger,實現更精細化的權限控制

在大數據場景中&#xff0c;文件系統和應用組件的權限管理至關重要。在最新發布的 JuiceFS 社區版 v1.3-Beta 2 中&#xff0c;JuiceFS 引入了與 Apache Ranger 的集成&#xff0c;提供了更為靈活和細粒度的權限控制解決方案。 本文將介紹 JuiceFS 社區版如何與 Apache Ranger…

6月8日day48打卡

隨機函數與廣播機制 知識點回顧&#xff1a; 隨機張量的生成&#xff1a;torch.randn函數卷積和池化的計算公式&#xff08;可以不掌握&#xff0c;會自動計算的&#xff09;pytorch的廣播機制&#xff1a;加法和乘法的廣播機制 ps&#xff1a;numpy運算也有類似的廣播機制&…

計算機常用快捷鍵分類匯總,涵蓋 Windows、macOS 以及通用軟件場景

一、系統通用快捷鍵 功能Windows 快捷鍵macOS 快捷鍵復制Ctrl CCommand C粘貼Ctrl VCommand V剪切Ctrl XCommand X撤銷Ctrl ZCommand Z全選Ctrl ACommand A保存Ctrl SCommand S打印Ctrl PCommand P新建窗口/標簽頁Ctrl NCommand N關閉當前窗口/標簽頁Ctrl WC…

ES6中的Map與Set數據結構的簡單應用

一、Map定義和基本用法 Map是一種鍵值對集合&#xff0c;其中鍵和值都可以是任何類型&#xff08;對象、原始值等&#xff09;。與普通對象不同&#xff0c;Map保持鍵值對的插入順序&#xff0c;并且允許使用任何類型的鍵。 1、創建Map const map new Map()2、添加鍵值對。…

25.【.NET8 實戰--孢子記賬--從單體到微服務--轉向微服務】--單體轉微服務--用戶服務接口

用戶管理是任何系統的基礎功能之一&#xff0c;本篇介紹了如何實現一個完整的用戶管理模塊&#xff0c;包括用戶信息的增刪改查、用戶狀態管理、分頁查詢、數據驗證和權限控制。核心代碼實現部分涵蓋了控制器&#xff08;UserController&#xff09;、服務接口&#xff08;IUse…

基于深度學習的無人機軌跡預測

完整代碼見文末 隨著無人機技術的不斷發展,無人機在農業、物流、監控等領域的應用日益廣泛。精準的軌跡預測不僅能夠提高無人機飛行的效率和安全性,還能在應對復雜環境下的突發狀況時做出迅速反應。因此,基于深度學習的無人機軌跡預測已成為當前研究和應用的熱門方向。 無…

AUTOSAR實戰教程--DoIP_02_診斷鏈路建立流程

第一步&#xff1a;DoIP實體車輛聲明/診斷儀車輛識別請求 打開激活線以后&#xff0c;DoIP實體發的三幀車輛聲明報文。其中包含了DoIP實體的診斷邏輯地址&#xff08;可以類比DoCAN的物理請求/響應地址&#xff09;&#xff0c;對應車輛的VIN碼&#xff08;若已配置&#xff0…