LangChain - 文本嵌入

文章目录

    • 一、关于 文本嵌入模型
    • 二、入门
      • 1、设置 OpenAI
      • 2、`embed_documents`
      • 3、`embed_query`
    • 三、集成示例
      • 1、DashScope
      • 2、OpenAI
      • 3、Hugging Face Hub
      • 4、Fake Embeddings


本文转载改编自:
https://python.langchain.com.cn/docs/modules/data_connection/text_embedding/


一、关于 文本嵌入模型

嵌入类是一个用于与文本嵌入模型进行交互的类。有很多嵌入模型提供商(OpenAI、Cohere、Hugging Face等)-该类旨在为所有这些提供一个标准接口。

嵌入可以创建文本的向量表示。这很有用,因为这意味着我们可以在向量空间中思考文本,并进行语义搜索,其中我们寻找在向量空间中最相似的文本片段。

LangChain中的基本嵌入类提供两种方法:一种用于嵌入文档,一种用于嵌入查询。前者以多个文本作为输入,而后者以单个文本作为输入。

之所以将它们作为两种不同的方法,是因为某些嵌入提供商对于文档(要搜索的文档)和查询(搜索查询本身)有不同的嵌入方法。


二、入门

1、设置 OpenAI

首先,我们需要安装 OpenAI Python 包:

pip install openai

访问 API 需要一个 API 密钥,您可以通过创建一个帐户并访问 此处 来获取。

一旦我们有了密钥,我们将通过运行以下命令将其设置为环境变量:

export OPENAI_API_KEY="..."

如果您不想设置环境变量,您可以在初始化 OpenAI LLM 类时直接通过 openai_api_key 命名参数传递密钥:

from langchain.embeddings import OpenAIEmbeddingsembeddings_model = OpenAIEmbeddings(openai_api_key="...")

否则,您可以不使用任何参数进行初始化:

from langchain.embeddings import OpenAIEmbeddingsembeddings_model = OpenAIEmbeddings()

2、embed_documents

Embed list of texts

embeddings = embedding_model.embed_documents(["Hi there!","Oh, hello!","What's your name?","My friends call me World","Hello World!"]
)
len(embeddings), len(embeddings[0])
# (5, 1536)

3、embed_query

嵌入单个查询 (Embed single query)

嵌入单个文本以便与其他嵌入的文本进行比较。

embedded_query = embedding_model.embed_query("What was the name mentioned in the conversation?")
embedded_query[:5]
[0.0053587136790156364,-0.0004999046213924885,0.038883671164512634,-0.003001077566295862,-0.00900818221271038]

三、集成示例

1、DashScope

Let’s load the DashScope Embedding class.

from langchain.embeddings import DashScopeEmbeddingsembeddings = DashScopeEmbeddings(model="text-embedding-v1", dashscope_api_key="your-dashscope-api-key"
)text = "This is a test document."query_result = embeddings.embed_query(text)
print(query_result) doc_results = embeddings.embed_documents(["foo"])
print(doc_results)

2、OpenAI

加载 OpenAI Embedding 类

from langchain.embeddings import OpenAIEmbeddingsembeddings = OpenAIEmbeddings()text = "This is a test document."query_result = embeddings.embed_query(text) doc_result = embeddings.embed_documents([text])

Let’s load the OpenAI Embedding class with first generation models (e.g. text-search-ada-doc-001/text-search-ada-query-001).
Note: These are not recommended models - see here

from langchain.embeddings.openai import OpenAIEmbeddingsembeddings = OpenAIEmbeddings()text = "This is a test document."query_result = embeddings.embed_query(text)doc_result = embeddings.embed_documents([text])# if you are behind an explicit proxy, you can use the OPENAI_PROXY environment variable to pass through
os.environ["OPENAI_PROXY"] = "http://proxy.yourcompany.com:8080"

3、Hugging Face Hub

Let’s load the Hugging Face Embedding class.

from langchain.embeddings import HuggingFaceEmbeddings 
embeddings = HuggingFaceEmbeddings() 
text = "This is a test document." 
query_result = embeddings.embed_query(text) 
doc_result = embeddings.embed_documents([text])

4、Fake Embeddings

LangChain also provides a fake embedding class. You can use this to test your pipelines.

from langchain.embeddings import FakeEmbeddings 
embeddings = FakeEmbeddings(size=1352)query_result = embeddings.embed_query("foo") doc_results = embeddings.embed_documents(["foo"])

2024-04-08(一)

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

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

相关文章

Java对象转型

(一)向上转型 向上转型(自动转型),指子类类型转父类类型 //父类 public class Father {public String fatherAttr "父类属性";public void fatherMethod(){System.out.println("父类成员方法")…

1077:统计满足条件的4位数

1077:统计满足条件的4位数 时间限制: 1000 ms 内存限制: 65536 KB 提交数:79300 通过数: 54638 【题目描述】 给定若干个四位数,求出其中满足以下条件的数的个数:个位数上的数字减去千位数上的数字,再减去百位数上的数…

2024.3.29力扣每日一题——元素和最小的山形三元组1

2024.3.29 题目来源我的题解方法一 暴力解法方法二 规律 题目来源 力扣每日一题;题序:2908 我的题解 方法一 暴力解法 使用三层循环,分别控制左边界、峰值、右边界,依次遍历。 时间复杂度:O( n 3 n^3 n3) 空间复杂度…

Redis的三种部署方案

文章目录 单机模式主从复制哨兵模式分片集群 在Redis中提供的集群方案总共有三种:单机模式,主从复制集群、哨兵模式,Redis分片集群 单机模式 Redis 只运行在一台服务器上,并且所有的数据都存储在这一台服务器的内存中。 主从复制…

MYSQL数据库故障排除与优化

目录 MySQL 单实例故障排查 MySQL 主从故障排查 MySQL 优化 MySQL 单实例故障排查 故障现象 1 ERROR 2002 (HY000): Cant connect to local MySQL server through socket /data/mysql/mysql.sock (2) 问题分析:以上这种情况一般都…

80V输入1.5A,DC/DC高效率降压型电源芯片--ZCC2480

产品概述: ZCC2480 是一款内部集成有功率 MOSFET 管的降压型开关稳压器。以电流模式控制方式达到快速 环路响应并提高环路的稳定性。宽范围输入电压( 4.5 V 至 80V )提供最大 1.5A 电流的高效率输出, 可在移动环境输入的条件下实现…

Java编程规范及最佳实践

文章目录 一、命名规范二、代码风格规范三、注释规范四、推荐的编程实践五、类和接口六、异常处理七、可见性八、并发九、代码复用十、代码组织和模块化十一、Java集合框架十二、输入验证十三、资源管理十四、文档和注释十五、测试和代码质量十六、代码可读性十七、性能优化十八…

Django之REST Client插件

一、接口测试工具介绍 在开发前后端分离项目时,无论是开发后端,还是前端,基本都是需要测试API接口的内容,而目前我们需要开发遵循RESTFul规范的项目,也是必然的(自己不开发前端页面)。 在网上有很多这样的工具,常用的postman,但还是需要下载安装。在这我们介绍一个VSCod…

[C++][C++类型转换]详解

目录 1.C语言中的类型转换2.为什么C需要四种类型转换?3.C强制类型转换1.static_cast2.reinterpret_case3.const_cast4.dynamic_cast 4.RTTI(了解) 1.C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配&…

【小白学机器学习12】假设检验之3:t 检验 (t检验量,t分布,查t值表等)

目录 1 t 检验的定义 1.1 来自维基百科和百度百科 1.2 别名 1.3 和其他检验的区别 2 适用情况: 2.1 关于样本情况 2.2 适合检查的情况 2.2.1 单样本均值检验(One-sample t-test) 2.2.2 两独立样本均值检验(Independent …

2024.4.6力扣每日一题——树节点的第 K 个祖先

2024.4.6 题目来源我的题解方法一 哈希表 超内存方法二 树上倍增 题目来源 力扣每日一题;题序:1483 我的题解 方法一 哈希表 超内存 使用一个哈希表存储每个节点的祖先节点。 时间复杂度:O(n) 空间复杂度:O( n 2 n^2 n2) class…

hydra九头蛇

一、hydra简介 Hydra是一款非常强大的暴力破解工具,它是由著名的黑客组织THC开发的一款开源暴力破解工具。Hydra是一个验证性质的工具,主要目的是:展示安全研究人员从远程获取一个系统认证权限。 目前该工具支持以下协议的爆破: A…

2024年华为OD机试真题-启动多任务排序-Java-OD统一考试(C卷)

题目描述: 一个应用启动时,会有多个初始化任务需要执行,并且任务之间有依赖关系,例如A任务依赖B任务,那么必须在B任务执行完成之后,才能开始执行A任务。 现在给出多条任务依赖关系的规则,请输入任务的顺序执行序列,规则采用贪婪策略,即一个任务如果没有依赖的任务,则…

蓝桥杯小白入门赛第9场第4题 字典树考试

问题描述 蓝桥学院最近教学了字典树这一数据结构,小蓝是全班的第一名,他不仅掌握了普通字典树,还自学了 01 字典树的使用。为了展示自己的能力,他向全班同学出了以下问题: 给定一个长度为 N N N 的数组 A A A , 你能否求出表达式 ∑ i = 1 N ∑ j = i + 1 N f ( A i …

【网站项目】农业信息管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

基于STM32f103芯片的应用程序在线升级功能框架的实现

目录 基于STM32f103芯片的应用程序在线升级功能框架的实现 一、原理简介 二、KEIL软件主要设置 三、应用程序app部分 四、Bootloader部分 五、补充部分 基于STM32f103芯片的应用程序在线升级功能框架的实现 一、原理简介 我们在使用stm32的过程中,如果需要对…

[C#]OpenCvSharp改变图像的对比度和亮度

目的 访问像素值mat.At<T>(y,x) 用0初始化矩阵Mat.Zeros 饱和操作SaturateCast.ToByte 亮度和对比度调整 g(x)αf(x)β 用α(>0)和β一般称作增益(gain)和偏置(bias)&#xff0c;分别控制对比度和亮度 把f(x)看成源图像像素&#xff0c;把g(x)看成输出图像像素…

Spring Boot集成Spring Retry快速入门Demo

1.Retry介绍 Spring Retry 提供了自动重新调用失败的操作的功能。这在错误可能是暂时的&#xff08;例如瞬时网络故障&#xff09;的情况下很有用。从2.2.0版本开始&#xff0c;重试功能已从Spring Batch中撤出&#xff0c;成为一个独立的新库&#xff1a;Spring Retry 使用场景…

蓝桥杯第十五届抱佛脚(十)贪心算法

蓝桥杯第十五届抱佛脚&#xff08;十&#xff09;贪心算法 贪心算法基本概念 贪心算法是一种在算法设计中常用的方法&#xff0c;它在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是最好或最优的算法。 贪…

身份证实名认证接口的价格一般是多少呢?基于PHP身份核验接口

身份证实名认证接口分为身份证二要素、三要素、三要素人像核验接口&#xff0c;被广泛的应用于婚恋、交友、电商等等一系列行业领域&#xff0c;身份证实名认证需要实时数据&#xff0c;对于数据源来说也需要可靠&#xff0c;那么&#xff0c;身份证实名认证的价格是不是很贵呢…