LangChain-結合魔塔社區modelscope的embeddings實現搜索

首先要安裝modelscope

pip install?modelscope

安裝完成后測試

from langchain_community.embeddings import ModelScopeEmbeddingsembeddings = ModelScopeEmbeddings(model_id="iic/nlp_gte_sentence-embedding_chinese-base")text = "這是一個測試句子"
query_result = embeddings.embed_query(text)
print(f"嵌入向量長度: {len(query_result)}")

運行后,會自動下載,最后輸出:

以下使用?智譜AI大模型 +?modelscope + LangChain?實現搜索功能

from langchain_community.embeddings import  ModelScopeEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableLambda, RunnablePassthrough
from langchain_community.vectorstores import Chroma
from langchain_core.documents import Document# 實例化自定義語言模型
from langchain_openai import ChatOpenAIllm = ChatOpenAI(temperature=1,model='glm-4-plus',openai_api_key='*****',openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)documents = [Document(page_content='狗是偉大的伴侶,以其忠誠和友好而聞名。',metadata={'source': '哺乳動物寵物文檔'},),Document(page_content='貓是獨立的寵物,通常喜歡自己的空間。',metadata={'source': '哺乳動物寵物文檔'},),Document(page_content='金魚是初學者的流行寵物,需要比較簡單的護理。',metadata={'source': '魚類寵物文檔'},),Document(page_content='鸚鵡是聰明的鳥類,能模仿人數的語言。',metadata={'source': '鳥類動物寵物文檔'},),Document(page_content='白兔是社交動物,需要足夠的跳躍空間。',metadata={'source': '哺乳動物寵物文檔'},),
]embeddings = ModelScopeEmbeddings(model_id="iic/nlp_gte_sentence-embedding_chinese-base")# 實例化向量數據庫
vector_store = Chroma.from_documents(documents, embedding=embeddings)# 相似度的查詢:返回相似的分數,分數越低相似度越高
# print(vector_store.similarity_search_with_score('咖啡貓'))# 檢索器:bind(k=1) 返回相似度最高的第一個
retriever = RunnableLambda(vector_store.similarity_search).bind(k=1)
# print(retriever.batch(['咖啡貓', '鯊魚']))# 提示模板
message = """
使用提供的上下文僅回答這個問題。
{question}
上下文:{context}
"""prompt_temp = ChatPromptTemplate.from_messages([('human', message)
])# RunnablePassthrough 允許我們將用戶的問題之后再傳遞給 prompt 和 model
chain = {'question': RunnablePassthrough(), 'context': retriever} | prompt_temp | llm
resp = chain.invoke('請介紹一個貓?')
print(resp.content)

以上代碼:

1.先定義要使用的AI大模型?

2.定義documents,這里可以自己使用本地的文檔內容

3.然后使用modelscope的embeddings實例化向量數據庫

4.創建檢索器,取向量返回的相似度最高的第一個值

5.定義一個用戶提示詞模板,用于上下文中問題的回答

6.構建一個chain,調用鏈invoke

運行之后的結果:

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

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

相關文章

可定制化貨代管理系統,適應不同業務模式需求!

在全球化貿易的浪潮下,貨運代理行業扮演著至關重要的角色。然而,隨著市場競爭的日益激烈,貨代企業面臨著越來越多的挑戰:客戶需求多樣化、業務流程復雜化、運營成本上升、利潤空間壓縮……這些挑戰迫使貨代企業不斷尋求創新和突破…

Lyra學習筆記2 GFA_AddComponents與ULyraPlayerSpawningManagerComponent

目錄 前言GameFeatureAction_AddComponentsULyraPlayerSpawningManagerComponent緩存所有PlayerStart位置選擇位置 前言 1.以control模式為例 2.比較散,想單獨拿出一篇梳理下Experience的流程 GameFeatureAction_AddComponents 這部分建議看 《InsideUE5》GameFeatu…

進程生命周期

進程生命周期 Linux是多任務操作系統,系統中的每個進程能夠分時復用CPU時間片,通過有效的進程調度策略實現多任務并行執行。進程在被CPU調度運行,等待CPU資源分配以及等待外部事件時會處于不同的狀態。進程狀態如下: 創建狀態&a…

文字轉圖片的字符畫生成工具

軟件介紹 今天要介紹的這款軟件可以將文字轉換成圖片的排列形式,非常適合需要將文字圖形化的場景,建議有需要的朋友收藏。 軟件名稱與用途 這款軟件名為《字符畫大師》,是一款在網吧等場所非常流行的聊天輔助工具,其主要功能就…

歷年南京大學計算機保研上機真題

2025南京大學計算機保研上機真題 2024南京大學計算機保研上機真題 2023南京大學計算機保研上機真題 在線測評鏈接:https://pgcode.cn/school Count Number of Binary Strings 題目描述 Given a positive integer n n n ( 3 ≤ n ≤ 90 3 \leq n \leq 90 3≤n≤…

王樹森推薦系統公開課 排序06:粗排模型

shared bottom 表示神經網絡被所有特征共享。精排模型主要開銷在神經網絡,神經網絡很大且很復雜。 每做一次推薦,用戶塔只做一次推理。物品塔存放入向量數據庫。 后期融合模型常用于召回,前期融合模型常用于精排。 物品塔短時間內比較穩…

VSCode的下載與安裝(2025親測有效)

目錄 0 前言1 下載2 安裝3 后記 0 前言 丫的,誰懂啊,嘗試了各種辦法不行的話,我就不得不拿出我的最后絕招了,卸載,重新安裝,我經常要重新安裝,所以自己寫了一個博客,給自己&#xf…

端午節互動網站

端午節互動網站 項目介紹 這是一個基于 Vue 3 Vite 開發的端午節主題互動網站,旨在通過有趣的交互方式展示中國傳統端午節文化。網站包含三個主要功能模塊:端午節介紹、互動包粽子游戲和龍舟競賽游戲。 預覽網站:https://duanwujiekuaile…

Python+requests+pytest接口自動化測試框架的搭建(全)

🍅 點擊文末小卡片,免費獲取軟件測試全套資料,資料在手,漲薪更快 框架的設計思路 首先要明確進行接口自動化需要的步驟,如下圖所示: 然后逐步拆解需要完成的工作: 1)了解分析需求&…

OpenCV視覺圖片調整:從基礎到實戰的技術指南

引言:數字圖像處理的現代意義與OpenCV深度應用 在人工智能與計算機視覺蓬勃發展的今天,圖像處理技術已成為多個高科技領域的核心支撐。根據市場研究機構Grand View Research的數據,全球計算機視覺市場規模預計將從2022年的125億美元增長到2030年的253億美元,年復合增長率達…

JS手寫代碼篇---手寫節流函數

8、節流函數 什么是節流函數? 指規定一個單位時間,在這個單位時間內,只能有一次觸發事件的回調函數執行,如果在同一個單位時間內某事件被觸發多次,只有一次能生效。 與防抖函數有什么區別? 防抖函數是延…

2025年05月30日Github流行趨勢

項目名稱:agenticSeek 項目地址url:https://github.com/Fosowl/agenticSeek項目語言:Python歷史star數:13040今日star數:1864項目維護者:Fosowl, steveh8758, klimentij, ganeshnikhil, apps/copilot-pull-…

node_modules包下載不下來

如果項目里面的package-lock.json有resolved ,就指向了包的下載來源,如果這個網址掛了,那npm i 就會一直卡著。而且,在終端去修改 npm的鏡像是沒有用的 解決辦法是:把項目里面的 lock文件 .npmrc都刪了 然后重新下載就可以了

OramaCore 是您 AI 項目、答案引擎、副駕駛和搜索所需的 AI 運行時。它包括一個成熟的全文搜索引擎、矢量數據庫、LLM界面和更多實用程序

一、軟件介紹 文末提供程序和源碼下載 OramaCore 是您的項目、答案引擎、副駕駛和搜索所需的 AI 運行時。 它包括一個成熟的全文搜索引擎、矢量數據庫、LLM具有行動計劃和推理功能的接口、用于根據數據編寫和運行您自己的自定義代理的 JavaScript 運行時,以及更多…

小白成長之路-計算機網絡(四)

文章目錄 前言一、網絡連接查看1.netstat2.ss3.bond綁定3.1準備好這三個文件3.2添加bond配置文件3.3關閉網絡圖形化服務3.4重啟 4.Linux下的抓包工具Wireshark 5、web壓力測試工具6、路由追蹤命令 二、[練習題](https://blog.csdn.net/m0_70730767/article/details/148262716?…

CppCon 2014 學習:Lock-Free Programming

你這段文字講的是“為什么要使用無鎖(Lock-Free)代碼”,我幫你總結并解釋一下: 為什么選擇無鎖代碼? 并發性和可擴展性(Concurrency and scalability) 無鎖算法允許多個線程同時操作共享數據&a…

Proteus尋找元器件(常見)

匯總: 1 主控芯片 STM32系列(32位) AT89C51(51系列) 2顯示模塊 OLED 3 按鍵 Button 4 電阻電容 Res(電阻) Cap(電容) 5 驅動模塊 L298N(電機驅動芯片&am…

vue+threeJs 繪制3D圓形

嗨,我是小路。今天主要和大家分享的主題是“vuethreeJs 繪制圓形”。 今天找到一個用three.js繪制圖形的項目,主要是用來繪制各種形狀。 項目案例示意圖 1.THREE.ShapeGeometry 定義:是 Three.js 中用于從 2D 路徑形狀&#xff08…

macOS燒錄stm32程序初步成功

完整總結:STM32H7 項目編譯與燒錄流程(macOS OpenOCD/GDB) 1?? 編譯工程 在項目目錄下執行 make,生成 ELF 文件(如 Blink.elf): cd /Users/code/Stm32code/Blink/build make clean # 可選…

正則表達式的修飾符

修飾符 修飾符不寫在正則表達式里,標記位于表達式之外 /正則表達式/修飾符gglobal - 全局匹配 查找所有的匹配項。 i i (ignore case) - 忽略大小寫 示例:/abc/i 可以匹配 "abc", "Abc", "ABC" 等