本地运行性能超越 OpenAI Text-Embedding-Ada-002 的 Embedding 服务,太方便了!

ollama 是一款超级实用的工具,让你能够在本地轻松运行 llama 2、mistral、gemma 等开源模型。本文我将介绍如何使用 ollama 实现对文本的向量化处理。如果你本地还没有安装 ollama,可以阅读这篇文章。

本文我们将使用 nomic-embed-text[2] 模型。它是一种文本编码器,在短的上下文和长的上下文任务上,性能超越了 OpenAI text-embedding-ada-002 和 text-embedding-3-small。

启动 nomic-embed-text 服务

当你已经成功安装好 ollama 之后,使用以下命令拉取 nomic-embed-text 模型:

ollama pull nomic-embed-text

待成功拉取模型之后,在终端中输入以下命令,启动 ollama 服务:

ollama serve

之后,我们可以通过 curl 来验证 embedding 服务是否能正常运行:

curl http://localhost:11434/api/embeddings -d '{"model": "nomic-embed-text","prompt": "The sky is blue because of Rayleigh scattering"}'

使用 nomic-embed-text 服务

接下来,我们将介绍如何利用 langchainjs 和 nomic-embed-text 服务,实现对本地 txt 文档执行 embeddings 操作。相应的流程如下图所示:

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

本地运行性能超越 OpenAI Text-Embedding-Ada-002 的 Embedding 服务,太方便了!图片

1.读取本地的 txt 文件

import { TextLoader } from "langchain/document_loaders/fs/text";async function load(path: string) {const loader = new TextLoader(path);const docs = await loader.load();return docs;}

在以上代码中,我们定义了一个 load 函数,该函数内部使用 langchainjs 提供的 TextLoader 读取本地的 txt 文档。

2.把 txt 内容分割成文本块

import { RecursiveCharacterTextSplitter } from "langchain/text_splitter";import { Document } from "langchain/document";function split(documents: Document[]) {const splitter = new RecursiveCharacterTextSplitter({chunkSize: 500,chunkOverlap: 20,});return splitter.splitDocuments(documents);}

在以上代码中,我们使用 RecursiveCharacterTextSplitter 对读取的 txt 文本进行切割,并设置每个文本块的大小是 500。

3.对文本块执行 embeddings 操作

const EMBEDDINGS_URL = "http://127.0.0.1:11434/api/embeddings";async function embedding(path: string) {const docs = await load(path);const splittedDocs = await split(docs);for (let doc of splittedDocs) {const embedding = await sendRequest(EMBEDDINGS_URL, {model: "nomic-embed-text",prompt: doc.pageContent,});console.dir(embedding.embedding);}}

在以上代码中,我们定义了一个 embedding 函数,在该函数中,会调用前面定义的 load 和 split 函数。之后对遍历生成的文本块,然后调用本地启动的 nomic-embed-text embedding 服务。其中 sendRequest 函数用于发送 embeding 请求,它的实现代码很简单,就是使用 fetch API 调用已有的 REST API。

AI-Text-Classifier AI-Text-Classifier

OpenAI官方出品,可以区分人工智能书写的文本和人类书写的文本

AI-Text-Classifier 27 查看详情 AI-Text-Classifier

async function sendRequest(url: string, data: Record) {try {const response = await fetch(url, {method: "POST",body: JSON.stringify(data),headers: {"Content-Type": "application/json",},});if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}const responseData = await response.json();return responseData;} catch (error) {console.error("Error:", error);}}

接着,我们继续定义一个 embedTxtFile 函数,在该函数内部直接调用已有的 embedding 函数并添加相应的异常处理。

async function embedTxtFile(path: string) {try {embedding(path);} catch (error) {console.dir(error);}}embedTxtFile("langchain.txt")

最后,我们通过 npx esno src/index.ts 命令来快速执行本地的 ts 文件。若成功执行 index.ts 中的代码,在终端将会输出以下结果:

本地运行性能超越 OpenAI Text-Embedding-Ada-002 的 Embedding 服务,太方便了!图片

其实,除了使用上述的方式之外,我们还可以直接利用 @langchain/community 模块中的 [OllamaEmbeddings](https://js.langchain.com/docs/integrations/text_embedding/ollama “OllamaEmbeddings”) 对象,它内部封装了调用 ollama embedding 服务的逻辑:

import { OllamaEmbeddings } from "@langchain/community/embeddings/ollama";const embeddings = new OllamaEmbeddings({model: "nomic-embed-text", baseUrl: "http://127.0.0.1:11434",requestOptions: {useMMap: true,numThread: 6,numGpu: 1,},});const documents = ["Hello World!", "Bye Bye"];const documentEmbeddings = await embeddings.embedDocuments(documents);console.log(documentEmbeddings);

本文介绍的内容涉及开发 RAG 系统时,建立知识库内容索引的处理过程。如果你对 RAG 系统还不了解的话,可以阅读相关的文章。

参考资料

[1]Ollama: https://ollama.com/

[2]nomic-embed-text: https://ollama.com/library/nomic-embed-text

以上就是本地运行性能超越 OpenAI Text-Embedding-Ada-002 的 Embedding 服务,太方便了!的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/615763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月11日 03:54:38
下一篇 2025年11月11日 03:55:57

相关推荐

  • php函数性能分析工具介绍:如何测试函数性能?

    针对 php 函数性能分析,本文提供以下工具:xdebug:分析函数执行时间和内存消耗。php benchmark:比较不同函数的性能。blackfire.io:提供详细的分析报告和性能优化建议。 PHP 函数性能分析工具介绍:如何测试函数性能? 简介 在 PHP 开发中,分析函数性能对于优化应用程…

    2025年12月10日
    000
  • 2025年哪些AI代币值得关注?

    2025年AI加密市场迎来爆发,总市值达295亿美元,AI代币在去中心化应用中占比18.6%,Bittensor、ASI、NEAR、Render等项目推动基础设施、公链性能与算力网络发展,AI代理预计执行90%链上交易,但需警惕泡沫风险、代理错误及区块链最终性矛盾。 随着人工智能与区块链技术的深度融…

    2025年12月10日
    000
  • Tether 估值或将超越 OpenAI?Tether未来如何?一文分析

    2025年9月,对于全球最具影响力的稳定币提供商Tether来说,是一个意义非凡的时期。Tether刚刚经历了重大的领导层改组和大胆的业务扩张战略,目前正处于历史性融资的边缘,这轮融资可能将其估值推高至5000亿美元,甚至有可能超越人工智能巨头OpenAI。 在本文中,您将了解到有关 Tether …

    2025年12月10日
    000
  • php函数版本更新对性能和安全性有哪些影响?

    php 函数版本更新的影响:性能影响:更新版本通常优化代码,提高性能,例如减少内存使用或加快执行速度。安全性影响:新版本修复安全漏洞(如缓冲区溢出或 xss),增强应用程序安全性,防止恶意攻击。 PHP 函数版本更新对性能和安全性有哪些影响? 简介 PHP 函数的版本更新不仅能引入新功能,还能提高性…

    2025年12月9日
    000
  • 函数的参数传递方式对性能有何影响?

    函数参数传递方式显著影响性能。按值传递创建参数副本,确保原始值不会意外修改,但复制大型数据结构会降低效率;按引用传递提供对参数的直接访问,避免复制,提高修改大型数据结构的效率,但更复杂且可能意外更改原始值。选择方式取决于场景:操作小值时按值传递更优;处理大型数据结构或需要函数修改原始值时,按引用传递…

    2025年12月9日
    000
  • PHP 对象与函数的关系对性能有何影响?

    对象方法调用比函数调用更慢。原因如下:对象方法调用需查找对象的方法。对象方法包含更多开销。然而,对象提供额外功能和代码组织能力,可能弥补性能损失。 PHP 对象与函数的关系对性能有何影响? 前言 在 PHP 中,对象与函数是不同的概念。对象是一种数据类型,可以包含数据和方法,而函数是一种可执行代码块…

    2025年12月9日
    000
  • 从头规划 PHP 函数的设计,优化性能

    设计 php 函数时,遵循如下步骤可优化性能:明确函数目的、确定输入输出、识别依赖项、设计算法、优化数据结构。具体优化手段包括:避免不必要的开销、使用缓存、进行基准测试、优化内存分配并避免全局变量。实战案例:优化包含大数据集的数组搜索函数,将数组转换为关联数组可将搜索复杂度从 o(n) 优化为 o(…

    2025年12月9日
    000
  • PHP参数类型检查对性能的影响如何?

    PHP 参数类型检查对性能的影响 前言 PHP 参数类型检查是一种在函数执行之前验证参数是否属于预期类型的方法。它有助于捕获潜在的错误并提高代码的健壮性。然而,仔细考虑类型检查对性能的影响非常重要。 性能影响 立即学习“PHP免费学习笔记(深入)”; Type Hinting: PHP 7.0 引入…

    2025年12月9日
    000
  • 扩展 PHP 函数是否会影响性能?

    扩展 php 函数会影响性能,具体影响方式取决于:扩展的实现方式:zend 扩展通常比 pecl 扩展或特性模块更有效率。函数的复杂性:扩展函数的计算强度影响性能。函数的使用频率:频繁调用的扩展函数对性能影响更大。 扩展 PHP 函数是否会影响性能? 扩展 PHP 函数可以为开发人员提供额外的功能,…

    2025年12月9日
    000
  • PHP 函数中引用的性能影响

    php 函数引用可提高性能,因为它避免了变量复制,但过度使用它可能会导致副作用。按引用传递变量可以减少大型数据结构或复杂对象的性能开销,但它会引入间接寻址和内存冲突的潜在性能成本。最佳实践包括仅在必要时按引用传递变量,确保防止内存冲突,并使用剖析工具来识别性能问题代码。 PHP 函数中引用的性能影响…

    2025年12月9日
    000
  • PHP 函数中变量类型对于性能的影响是什么?

    php 函数中,变量类型对性能有以下影响:基本类型(整数、字符串等)值传递,修改不影响调用者值。引用类型(数组、对象等)引用传递,修改会直接反映在调用者值中。基本类型传参性能优于引用类型,因为无需复制整个值。理解变量类型在函数中的传递方式有助于优化代码性能。 PHP 函数中变量类型对性能的影响 在 …

    2025年12月9日
    100
  • PHP 函数扩展对性能的影响有哪些?

    php 函数扩展对性能的影响:性能损耗来源:函数调用开销和代码优化不足。实战案例:php-redis 扩展:过度使用导致连接管理问题。php-imagick 扩展:复杂图像操作导致性能下降。性能优化建议:谨慎选择扩展、适度使用、优化代码、监视性能、禁用未使用的扩展。 PHP 函数扩展对性能的影响 P…

    2025年12月9日
    000
  • PHP 函数中使用变量类型是否会影响性能?

    在 php 函数中使用类型声明通常不会影响性能,但可能导致以下性能差异:强制转换:不匹配的类型将导致强制转换,略微降低性能。类型检查:强制类型检查会引入轻微性能开销。然而,对于大量数据或强制类型检查,使用类型声明可能略微降低性能。权衡性能影响和其他好处以做出决定。 变量类型对 PHP 函数性能的影响…

    2025年12月9日
    000
  • PHP 函数扩展对性能有何影响?

    函数扩展会对 php 性能产生影响,主要包括函数查找、参数映射和函数执行三个方面的开销。实战案例表明,对于简单的字符串操作,原始 php 函数的性能优于函数扩展,因此在使用函数扩展时应考虑其潜在的性能影响。 PHP 函数扩展对性能有何影响? 在 PHP 中,函数扩展是通过注册自定义函数来扩展 PHP…

    2025年12月9日
    000
  • UnifAI Network (UAI) 币是什么?UAI价格预测2025, 2026–2030

    unifai network (uai) 是一个新兴的以人工智能为重点的区块链协议,旨在将人工 智能计算、数据交换和去中心化基础设施 集成到一个可互操作的生态系统中。截至 2025年11月 ,该代币交易价格为 0.1033美元 ,较近期低点上涨约 32.9% ,流通供应量为 2.39亿uai ,总供…

    2025年12月9日 好文分享
    000
  • Worldcoin (WLD) 币是什么?WLD代币经济学、应用场景与未来潜力

    worldcoin (wld) 是由openai创始人sam altman推出的加密货币项目,旨在构建全球最大的、公平的数字身份和货币体系。它通过扫描用户的虹膜信息,创建一个名为world id的全球数字身份,以区分人类和人工智能。 WLD 代币经济学 1、 WLD代币的总供应量上限为100亿枚,设…

    2025年12月9日
    000
  • 什么是稳定币链?它为何可能成为下一个热门趋势?

    数字不会说谎,超过3000亿美元的资金如今都流向了稳定币,重塑着全球资金流动的方式。稳定币最初只是加密货币领域的一个辅助工具,如今已悄然发展成为数字金融的支柱。从即时全球支付到人工智能驱动的交易,稳定币正在改写规则。而现在,新的篇章即将开启:稳定币链的崛起。 Binance币安 欧易OKX ️ Hu…

    2025年12月9日 好文分享
    000
  • elizaOS(ELIZAOS)币是什么?怎么样?ELIZAOS代币经济与未来前景分析

    elizaos 是一个 typescript 框架,用于构建能够自主思考、学习和行动的 ai 智能体。创建具有独特且持久个性的智能体,为它们配备插件以与世界互动,并让它们独立地朝着目标努力。$elizaos作为其代币将上线binance alpha,下面小编就和大家简单介绍一下吧。 Binance币…

    2025年12月9日
    000
  • Worldcoin (WLD) 是什么?WLD的虹膜扫描、代币经济学及争议解析

    worldcoin(wld)是由openai首席执行官sam altman共同创立的加密货币项目,旨在通过虹膜扫描技术创建一个全球性的身份和金融网络,以区分真人与ai机器人。 虹膜扫描与身份证明 1、Worldcoin使用一个名为“Orb”的球形设备来扫描用户的虹膜,并生成一个独特的、匿名的数字身份…

    2025年12月9日
    100
  • Tether狂赚100亿、Coinbase20亿扫货、Coinbase20亿扫货、马斯克要革通讯APP的命?一文

    Binance币安 欧易OKX ️ Huobi火币️ 最近的科技与加密世界可谓风云激荡:一边是稳定币巨头利润爆表,交易所重金押注未来;另一边马斯克杀入加密通讯领域,AI新势力尚未出牌便估值冲上50亿美元。与此同时,美联储降息预期升温,为整个行业注入强心剂。今天我们就把这些重磅事件串联起来,透视背后的…

    2025年12月9日
    000

发表回复

登录后才能评论
关注微信