Ollama利用嵌入模型实现RAG应用

Ollama支持embedding models嵌入模型,从而支持RAG(retrieval augmented generation)应用,结合文本提示词,检索到文档或相关数据。嵌入模型是通过训练生成向量嵌入,这是一长串数字数组,代表文本序列的关联关系。
1
Ollama的嵌入模型有三种:mxbai-embed-large、nomic-embed-text 、all-minilm。

使用

ollama pull mxbai-embed-large

python接口调用:

ollama.embeddings(model='mxbai-embed-large',prompt='Llamas are members of the camelid family',
)

样例

生成embeddings

pip install ollama chromadb

创建文件:example.py:

import ollama
import chromadbdocuments = ["Llamas are members of the camelid family meaning they're pretty closely related to vicuñas and camels","Llamas were first domesticated and used as pack animals 4,000 to 5,000 years ago in the Peruvian highlands","Llamas can grow as much as 6 feet tall though the average llama between 5 feet 6 inches and 5 feet 9 inches tall","Llamas weigh between 280 and 450 pounds and can carry 25 to 30 percent of their body weight","Llamas are vegetarians and have very efficient digestive systems","Llamas live to be about 20 years old, though some only live for 15 years and others live to be 30 years old",
]client = chromadb.Client()
collection = client.create_collection(name="docs")# store each document in a vector embedding database
for i, d in enumerate(documents):response = ollama.embeddings(model="mxbai-embed-large", prompt=d)embedding = response["embedding"]collection.add(ids=[str(i)],embeddings=[embedding],documents=[d])

检索

# an example prompt
prompt = "What animals are llamas related to?"# generate an embedding for the prompt and retrieve the most relevant doc
response = ollama.embeddings(prompt=prompt,model="mxbai-embed-large"
)
results = collection.query(query_embeddings=[response["embedding"]],n_results=1
)
data = results['documents'][0][0]

输出数据

# generate a response combining the prompt and data we retrieved in step 2
output = ollama.generate(model="llama2",prompt=f"Using this data: {data}. Respond to this prompt: {prompt}"
)print(output['response'])

What animals are llamas related to?

Llamas are members of the camelid family, which means they are closely
related to two other animals: vicuñas and camels. All three species
belong to the same evolutionary lineage and share many similarities in
terms of their physical characteristics, behavior, and genetic makeup.
Specifically, llamas are most closely related to vicuñas, with which
they share a common ancestor that lived around 20-30 million years
ago. Both llamas and vicuñas are members of the family Camelidae,
while camels belong to a different family (Dromedary).

参考

https://ollama.com/blog/embedding-models

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/304959.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

练习 21 Web [GXYCTF2019]BabySQli

SQL联合查询,注意有源码看源码,Base64以及32的区别,MD5碰撞 打开后有登录框,先随意登录尝试 只有输入admin才是返回wrong pass! 其他返回wrong user 所以用户名字段一定要输入admin 养成好习惯,先查看源码…

kali上python3切换python2环境

一、然后打开终端输入 python --version 二、 打开终端分别输入下面两条命令: update-alternatives --install /usr/bin/python python /usr/bin/python2 100 update-alternatives --install /usr/bin/python python /usr/bin/python3 150 三、 如果需要切换python版…

Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理

Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理 文章目录 Windows系统C盘空间优化进阶:磁盘清理与Docker日志管理磁盘清理工具 使用“运行”命令访问磁盘清理利用存储感知自动管理空间清理WinSxS文件夹结合手动清理策略 小结删除临时文件总结&…

流式密集视频字幕

流式密集视频字幕 摘要1 IntroductionRelated Work3 Streaming Dense Video Captioning Streaming Dense Video Captioning 摘要 对于一个密集视频字幕生成模型,预测在视频中时间上定位的字幕,理想情况下应该能够处理长的输入视频,预测丰富、…

Linux系统概述与安装

Linux的介绍 Linux内核 Linux内核是 Linux 操作系统主要组件,也是计算机硬件与其软件之间的交互入口。它负责两者之间的通信,还要尽可能高效地管理资源 Linux Shell shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口 Linux文…

java数组.day16(冒泡排序,稀疏数组)

冒泡排序 冒泡排序无疑是最为出名的排序算法之一,总共有八大排序! 冒泡的代码还是相当简单的,两层循环,外层冒泡轮数,里层依次比较,江湖中人人尽皆知。 我们看到嵌套循环,应该立马就可以得出这个算法的时…

2024中国航空航天暨无人机展览会8月在重庆举办

2024中国航空航天暨无人机展览会8月在重庆举办 邀请函 主办单位: 中国航空学会 重庆市南岸区人民政府 招商执行单位: 重庆港华展览有限公司 展会背景: 为更好的培养航空航天产业人才,汇聚航空教育产业创新科技,…

CTK插件框架学习-事件监听(07)

CTK插件框架学习-服务工厂(06)https://mp.csdn.net/mp_blog/creation/editor/137295686 一、简介 事件监听指当事件发生变化时所产生的通信,是动态的,对于已经发生过的事件无法监听 二、事件类型 1、框架事件 监听框架状态变化,因为监听…

usb_camera传输视频流编码的问题记录!

前言: 大家好,今天给大家分享的内容是,一个vip课程付费的朋友,在学习过程中遇到了一个usb采集的视频数据流,经过ffmpeg编码,出现了问题: 问题分析: 其实这个问题不难,关键…

git安装配置教程(小白保姆教程2024最新版)

目录 一、Git是什么?二、安装Git1.下载git2.安装git3.检测git 三、配置Git1.配置本地信息2.配置SSH1)SSH与SSH Key是什么?2)生成SSH Key3)获取ssh key公钥内容(id_rsa.pub)4)Github账号上添加公…

这段程序有点神奇,你能读懂么?

下面的程序在一个打开的文档中查找特定的字符串,这个字符串是“可以”,查找并仅保留最后的3次,抛弃其他的内容,请试运行一下,看看结果是否正确? from collections import deque def search(lines, pattern,…

【SpringBoot】配置swagger

pom.xml 安装插件 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>创建swagger配置类 import org.springframework.context.annotation.…

如何使用Tomcat+cpolar搭建本地站点并发布到公网分享好友远程访问

文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器拥有强大功能&#xff0c;由于其可以实…

如何使用Java和RabbitMQ实现延迟队列?

前言 今天我们使用Java和RabbitMQ实现消息队列的延迟功能。 前期准备&#xff0c;需要安装好docker、docker-compose的运行环境。 需要安装RabbitMQ的可以看下面这篇文章。 如何使用PHP和RabbitMQ实现消息队列&#xff1f;-CSDN博客 今天讲的是依赖RabbitMQ的延迟插件实现…

头歌-机器学习 第10次实验 逻辑回归

第1关&#xff1a;逻辑回归核心思想 任务描述 本关任务&#xff1a;根据本节课所学知识完成本关所设置的编程题。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 什么是逻辑回归&#xff1b; sigmoid函数。 什么是逻辑回归 当一看到“回归”这两个字&a…

【opencv】示例-falsecolor.cpp 使用OpenCV函数动态地对图像应用不同的色彩映射

该代码是一个使用OpenCV库实现的C程序&#xff0c;主要用来展示如何通过applyColorMap函数将色彩映射应用到一个灰度图像上&#xff0c;并提供一个滑动条来实时改变色彩映射的效果。此外&#xff0c;该程序还可以绘制包含不同形状的灰度图像&#xff0c;用作applyColorMap函数的…

QT 线程之movetothread

上文列举了qt中线程的几种方法&#xff0c;其中2种方法最为常见。 这两种方法都少不了QThread类&#xff0c;前者继承于QThread类&#xff0c;后者复合QThread类。 本文以实例的方式描述了movetothread&#xff08;&#xff09;这种线程的方法&#xff0c;将QObject的子类移动…

【MATLAB源码-第13期】基于matlab的4ASK的误码率BER和误符号率SER理论和实际对比仿真。

1、算法描述 "4ASK" 是一种数字调制技术&#xff0c;代表4级振幅移移键控&#xff08;4-Level Amplitude Shift Keying&#xff09;调制。它是一种数字通信中常用的调制方式之一&#xff0c;用于将数字信号转换为模拟信号以便传输&#xff0c;或者将模拟信号转换为数…

【ROS2笔记三】构建ROS2功能包

3.构建ROS2功能包 文章目录 3.构建ROS2功能包3.1ROS2中包的组成部分3.2创建ROS2功能包并编写节点3.2.1使用CMake创建功能包3.2.2编写cpp节点代码 3.3编译运行节点3.4使用面向对象的方式编写ROS2节点3.5使用RCLPY编写节点Reference 3.1ROS2中包的组成部分 ROS2可以使用CMake或者…

Linux从入门到精通 --- 3.用户、权限

文章目录 第三章&#xff1a;3.1 root用户3.1.1 su3.1.2 exit3.1.3 sudo 3.2 用户和用户组3.2.1 用户组管理创建用户组删除用户组 3.2.2 用户管理创建用户删除用户查看用户所属组修改用户所属组 3.2.3 getent一&#xff1a;二&#xff1a; 3.3 查看权限控制信息3.3.1 认知权限信…