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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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" 等