当前位置: 首页 > article >正文

通过eino-ext如何正常indexer RAG?

通过eino-ext如何正常indexer RAG整体架构文档文本 ──→ ARK Embedder向量化──→ DocumentConverter格式转换──→ Milvus Indexer写入 ↑ ↑ doubao-embedding-vision BinaryVector HAMMING安装配置安装 向量数据库 - Milvusservices:etcd:container_name:milvus-etcdimage:quay.io/coreos/etcd:v3.5.18environment:-ETCD_AUTO_COMPACTION_MODErevision-ETCD_AUTO_COMPACTION_RETENTION1000-ETCD_QUOTA_BACKEND_BYTES4294967296-ETCD_SNAPSHOT_COUNT50000volumes:-${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcdcommand:etcd-advertise-client-urlshttp://etcd:2379-listen-client-urls http://0.0.0.0:2379--data-dir /etcdhealthcheck:test:[CMD,etcdctl,endpoint,health]interval:30stimeout:20sretries:3minio:container_name:milvus-minioimage:minio/minio:RELEASE.2023-03-20T20-16-18Zenvironment:MINIO_ACCESS_KEY:minioadminMINIO_SECRET_KEY:minioadminports:-9001:9001-9000:9000volumes:-${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_datacommand:minio server /minio_data--console-address :9001healthcheck:test:[CMD,curl,-f,http://localhost:9000/minio/health/live]interval:30stimeout:20sretries:3standalone:container_name:milvus-standaloneimage:milvusdb/milvus:v2.5.10command:[milvus,run,standalone]security_opt:-seccomp:unconfinedenvironment:ETCD_ENDPOINTS:etcd:2379MINIO_ADDRESS:minio:9000volumes:-${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvushealthcheck:test:[CMD,curl,-f,http://localhost:9091/healthz]interval:30sstart_period:90stimeout:20sretries:3ports:-19530:19530-9091:9091depends_on:-etcd-minio# 这是新增的 Attu 服务哦attu:container_name:milvus-attuimage:zilliz/attu:v2.5ports:-8000:3000# 把本地的 8000 端口映射到容器的 3000 端口 (Attu 默认端口)environment:# MILVUS_URL 指向 Docker 网络里的 Milvus standalone 服务MILVUS_URL:standalone:19530depends_on:-standalone# 确保 Milvus 启动后再启动 Attunetworks:default:name:milvusdockercompose up-d这会启动 4 个服务etcdMilvus 的元数据存储MinIO对象存储用于持久化向量数据Milvus standalone向量数据库本身端口19530Attu可选Milvus 可视化管理界面端口8000访问 localhost:8000 可进入Attu 这是Milvus是可视化操作页面配置相关文件方舟控制台来购买向量模型 (主要目前只有多模态向量模型)# 用于访问ARK服务的API密钥 ARK_API_KEY # 指定使用的向量模型 EMBEDDERdoubao-embedding-vision-251215 # 坑爹模型代码介绍Milvus 客户端初始化varMilvusCli cli.Clientfuncinit(){ctx:context.Background()client,err:cli.NewClient(ctx,cli.Config{Address:localhost:19530,// Milvus 默认端口})iferr!nil{log.Fatalf(Failed to create client: %v,err)}MilvusCliclient}使用init()函数在包加载时自动建立连接。连接地址与 docker-compose 中映射的端口一致。定义 Collection Schemavarfields[]*entity.Field{{Name:id,DataType:entity.FieldTypeVarChar,TypeParams:map[string]string{max_length:255},PrimaryKey:true,},{Name:vector,DataType:entity.FieldTypeBinaryVector,// 二进制向量不是 FloatVectorTypeParams:map[string]string{dim:16384,// ⚠️ 单位是比特(bit)不是字节},},{Name:content,DataType:entity.FieldTypeVarChar,TypeParams:map[string]string{max_length:8192},},{Name:metadata,DataType:entity.FieldTypeJSON,},}踩坑记录FloatVector vs BinaryVector:ARK 的doubao-embedding-vision-*模型输出的是[]uint8二进制向量值域 0~255而不是常见的[]float32浮点向量。如果用entity.FieldTypeFloatVector运行时会报类型不匹配错误invalid type, expected[]float32, got[]uint8dim 的单位是比特:MilvusBinaryVector的dim参数单位是比特bit不是字节byte。项目值模型输出维度2048 个值每个 0~255字节数2048 bytes比特数2048 × 8 16384 bitsSchema dim 应填16384如果错误地填了2048以为是字节数Milvus 会认为每条数据的向量只有 2048 bit 256 byte但实际传入 2048 byte导致报错the num_rows(8)of field(vector)is not equal to passed num_rows(1)这里的8 2048 ÷ 256即 Milvus 把 1 条数据的 2048 byte 当成了 8 条 256-byte 的数据。初始化嵌入器Embeddertimeout:30*time.Second apiType:ark.APITypeMultiModal// ⚠️ 多模态模型必须指定embedder,err:ark.NewEmbedder(ctx,ark.EmbeddingConfig{APIKey:os.Getenv(ARK_API_KEY),Model:os.Getenv(EMBEDDER),// doubao-embedding-vision-251215APIType:apiType,Timeout:timeout,})ARK 的嵌入 API 有两个不同的 HTTP 端点APITypeText APITypetext_api#/api/v3/embeddings|纯文本嵌入模型 APITypeMultiModal APITypemulti_modal_api#/api/v3/embeddings/multimodal|多模态嵌入模型doubao-embedding-vision-*模型只部署在 multimodal 端点上。如果不设置APITypeSDK 会默认走 text 端点导致doubao-embedding-vision-251215 does not support this api (status code: 400)判断方法看模型名字是否包含vision包含就必须用APITypeMultiModal。自定义 DocumentConverter查看 eino-ext 源码中默认 Converter 的实现utils.gotypes.go发现它用的是带milvus:tag 的结构体指针typebinaryRowstruct{IDstringjson:id milvus:name:idContentstringjson:content milvus:name:contentVector[]bytejson:vector milvus:name:vector// BinaryVector 标量Metadata[]bytejson:metadata milvus:name:metadata// JSON 序列化后的字节}funcbinaryDocumentConverter(_context.Context,docs[]*schema.Document,vectors[][]float64)([]interface{},error){rows:make([]interface{},0,len(docs))fori,doc:rangedocs{metadata,_:json.Marshal(doc.MetaData)// 元数据需序列化为 []bytebyteVec:make([]byte,len(vectors[i]))forj,v:rangevectors[i]{byteVec[j]byte(v)}rowsappend(rows,binaryRow{// ⚠️ 必须返回 struct 指针ID:doc.ID,Content:doc.Content,Vector:byteVec,Metadata:metadata,})}returnrows,nil}struct 必须带milvus:name:xxxtag告诉 SDK 每个字段对应哪个列名Vector 字段类型是[]byte对应 BinaryVector返回值必须是 struct 指针binaryRow{...}不能是值或 map组装 Indexerindexer,err:milvus.NewIndexer(ctx,milvus.IndexerConfig{Client:MilvusCli,Collection:collection,// 集合名: AwesomeEinoFields:fields,// 上文定义的 SchemaEmbedding:embedder,// ARK 嵌入器MetricType:milvus.MetricType(entity.HAMMING),// 二进制向量用汉明距离DocumentConverter:binaryDocumentConverter,// 自定义转换器})写入时逐条存入也可以批量for_,doc:rangedocs{storeDoc:[]*schema.Document{{ID:doc.ID,Content:doc.Content,MetaData:doc.MetaData}}ids,err:indexer.Store(ctx,storeDoc)iferr!nil{log.Fatalf(Failed to store documents: %v,err)}println(Stored document ID:,ids[0])}入口文件与文档定义funcmain(){godotenv.Load(.env)// 加载环境变量docs:[]*schema.Document{{ID:doc1,Content:Eino 是一个开源的 AI 应用开发框架...,MetaData:map[string]interface{}{source:eino-docs}},{ID:doc2,Content:Milvus 是一个高性能向量数据库...,MetaData:map[string]interface{}{source:milvus-docs}},}stage4.IndexerRAG(docs)}

相关文章:

通过eino-ext如何正常indexer RAG?

通过eino-ext如何正常indexer RAG? 整体架构 文档文本 ──→ ARK Embedder(向量化)──→ DocumentConverter(格式转换)──→ Milvus Indexer(写入)↑ …...

CSS代码复用性太低怎么办_通过BEM结构提升组件模块化

BEM 能让 CSS 更易复用,因其通过「块__元素--状态」命名强制绑定样式与结构,明确依赖关系,避免全局冲突;补 BEM 应渐进式改造高频模块,严守命名规范;它不与 CSS-in-JS 或 Tailwind 冲突,但需统一…...

人工智能发展简史:关键节点与技术突破

文章目录 前言一、理论萌芽期(1943-1956):智能的火种悄然点燃1.1 1943年:人工神经元——智能的数学基石1.2 1950年:图灵测试——智能的评判标准1.3 1956年:达特茅斯会议——AI正式诞生 二、黄金时代与第一次…...

Python 匿名函数 lambda 基础语法与场景

文章目录前言一、先搞懂:lambda 到底是个啥?1.1 匿名函数,名字都懒得取的“临时工”1.2 lambda 和普通函数的核心区别二、lambda 基础语法全拆解2.1 无参数 lambda2.2 单个参数2.5 支持条件表达式三、lambda 为什么存在?核心使用场…...

因果推断利器:一文读懂合成控制法的原理、实现与应用

因果推断利器:一文读懂合成控制法的原理、实现与应用 引言:从“反事实”到科学评估 在评估一项新政策、一个产品功能或一次营销活动时,我们常面临一个根本性难题:我们永远无法同时观测到“实施”与“不实施”两种状态下的结果。…...

终极RPG Maker解密工具:3分钟掌握游戏资源提取全攻略

终极RPG Maker解密工具:3分钟掌握游戏资源提取全攻略 【免费下载链接】RPGMakerDecrypter Tool for decrypting and extracting RPG Maker XP, VX and VX Ace encrypted archives and MV and MZ encrypted files. 项目地址: https://gitcode.com/gh_mirrors/rp/RP…...

因果推断利器:工具变量法原理、实战与产业全景

因果推断利器:工具变量法原理、实战与产业全景当数据告诉你“相关性”,而你需要的是“因果性”时,工具变量法可能就是那把关键的钥匙。引言:从相关性到因果性,为什么需要工具变量? 在数据驱动的时代&#x…...

彻底解决ComfyUI图像细节缺失问题:Impact Pack V8版完整功能解锁指南

彻底解决ComfyUI图像细节缺失问题:Impact Pack V8版完整功能解锁指南 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目…...

AGI时代职业生存指南,掌握这7类不可替代能力,避开92%的自动化裁员风险

第一章:AGI与就业市场的未来变化 2026奇点智能技术大会(https://ml-summit.org) 通用人工智能(AGI)的实质性突破正加速重构全球劳动力结构。不同于当前专用AI系统在单一任务上的优化,AGI具备跨领域推理、自主目标设定与持续元学习…...

从MOD13A3到省级应用:中国2000-2021年逐月1km NDVI栅格数据高效处理与获取指南

1. MOD13A3数据基础与获取 对于需要研究中国植被覆盖变化的科研人员来说,MOD13A3数据集是个绕不开的话题。这个由NASA提供的月度植被指数产品,自2000年2月开始持续更新,已经成为全球植被监测的重要数据源。我处理这个数据集已经有五年多时间&…...

Simulink电机仿真避坑指南:电流环PI控制器离散化与Mask封装的5个关键细节

Simulink电机仿真避坑指南:电流环PI控制器离散化与Mask封装的5个关键细节 电机控制在工业自动化、新能源汽车等领域应用广泛,而Simulink作为强大的仿真工具,成为工程师验证控制算法的首选。但在实际仿真中,许多开发者常因忽略关键…...

保姆级避坑指南:用FlyMcu给STM32F103下载程序,别再傻傻用Keil编译了!

STM32F103串口通信实战:从FlyMcu下载到数据收发全解析 第一次接触STM32开发板时,最让人困惑的往往不是代码本身,而是整个工具链的使用流程。很多新手拿到商家提供的例程后,第一反应是打开Keil进行编译,却不知道有些现…...

【稀缺技术首发】:全球首个支持多模态生成(文本/DSL/图表)的回滚影响面图谱分析工具——实测降低MTTR 68%,仅开放前500家企业内测资格

第一章:智能代码生成代码回滚检测 2026奇点智能技术大会(https://ml-summit.org) 智能代码生成系统在提升开发效率的同时,也引入了潜在的语义退化与行为不一致风险。当大语言模型生成的代码被合并至主干后,若其在运行时触发异常、性能劣化或…...

Mozilla推出Thunderbolt AI客户端,主打自托管基础设施

Mozilla是最新一家进军企业AI市场的传统科技品牌。不过,这家Firefox和Thunderbird背后的公司并没有发布独立的AI模型或智能体浏览器,而是推出了全新的Thunderbolt——一款面向希望运行自托管AI基础设施、同时不依赖第三方云服务的用户和企业的前端客户端…...

终极方案:JetBrains IDE试用期重置完整指南

终极方案:JetBrains IDE试用期重置完整指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 当您的IntelliJ IDEA、PyCharm或WebStorm突然弹出"试用期已结束"的警告时,精心配置的…...

用自定义图像微调FLUX.1模型

使用自有图像微调FLUX.1模型 现在可以在Replicate上使用快速FLUX训练器微调模型。 该训练速度极快(不到2分钟)、成本低廉(低于2美元),并提供可运行的模型以及可下载的LoRA权重。 FLUX.1是Black Forest Labs今年夏季发布…...

spaCy v3.5新增模糊匹配与CLI命令

Introducing spaCy v3.5 Explosion 发布时间:2023年1月30日(3分钟阅读) 分类:博客 / spaCy / 基于规则的匹配 / 实体链接 spaCy自然语言处理库发布v3.5版本。该版本引入了三个新的CLI命令、增加了模糊匹配功能、改进了实体链接功…...

【技术底稿 17】DevOps 监控告警实战踩坑复盘 —— 企微机器人告警 + Milvus 向量库监控全流程验证

一、前言 本次实战围绕 DevOps 基础设施监控体系完善展开,基于现有 Docker 单机 Linux 环境、PrometheusAlertmanager 原生监控架构,开展两项核心工作: 验证 Alertmanager 对接企业微信群机器人 Webhook 移动端告警方案,提升告警…...

3个技巧快速掌握libwdi:Windows USB驱动安装的智能助手

3个技巧快速掌握libwdi:Windows USB驱动安装的智能助手 【免费下载链接】libwdi Windows Driver Installer library for USB devices 项目地址: https://gitcode.com/gh_mirrors/li/libwdi 你是否曾经遇到过这样的困扰?在Windows系统上连接USB设…...

C#怎么实现WPF MVVM框架 C#如何用CommunityToolkit.Mvvm快速搭建WPF MVVM项目【框架】

CommunityToolkit.Mvvm 通过 ObservableObject 和源生成器编译期注入 INotifyPropertyChanged 逻辑,避免手写漏通知、拼错名等问题;需严格匹配字段与属性名、禁用构造函数中 SetProperty、用泛型重载支持自定义通知;RelayCommand 需显式传 ca…...

原神游戏数据API:3分钟搭建你的专属游戏数据库

原神游戏数据API:3分钟搭建你的专属游戏数据库 【免费下载链接】api A fan-made Genshin Impact API for easy access to game data. 项目地址: https://gitcode.com/gh_mirrors/api13/api GenshinDev API 是一个专门为《原神》游戏数据提供访问接口的开源项…...

AEUX插件完全指南:从设计到动效的无缝转换

AEUX插件完全指南:从设计到动效的无缝转换 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX AEUX是一款革命性的设计到动画转换工具,它架起了Figma、Sketch等设计工…...

FigmaCN:专业级中文汉化解决方案,高效解决设计师语言障碍

FigmaCN:专业级中文汉化解决方案,高效解决设计师语言障碍 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN FigmaCN是一款专为中文设计师开发的Figma界面汉化插件&…...

UnrealPakViewer终极指南:5分钟掌握UE4 Pak文件分析的免费神器

UnrealPakViewer终极指南:5分钟掌握UE4 Pak文件分析的免费神器 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 你是否曾被UE4项目中庞大…...

3分钟彻底清理:Bulk Crap Uninstaller批量卸载工具完全指南

3分钟彻底清理:Bulk Crap Uninstaller批量卸载工具完全指南 【免费下载链接】Bulk-Crap-Uninstaller Remove large amounts of unwanted applications quickly. 项目地址: https://gitcode.com/gh_mirrors/bu/Bulk-Crap-Uninstaller 你是否曾经因为Windows系…...

海康威视第一季营收207亿:同比增12% 净利27.8亿 高毅资产减持

雷递网 乐天 4月17日杭州海康威视数字技术股份有限公司(证券代码:002415 证券简称:海康威视)今日发布截至2025年的年报。财报显示,海康威视2026年第一季度营收为207.15亿元,较上年同期的185.3亿元增长11.78…...

推荐系统实时更新

推荐系统实时更新的魅力与挑战 在信息爆炸的时代,推荐系统已成为用户获取内容的核心工具。无论是电商平台的商品推荐,还是短视频平台的个性化内容推送,实时更新的推荐系统正逐渐成为提升用户体验的关键。传统的推荐系统往往基于离线数据训练…...

Ostrakon-VL像素终端效果展示:从模糊价签到结构化JSON全过程

Ostrakon-VL像素终端效果展示:从模糊价签到结构化JSON全过程 1. 像素特工终端效果展示 1.1 视觉风格创新 Ostrakon-VL像素终端采用独特的8-bit复古游戏美学设计,将传统零售场景中的图像识别任务转化为充满趣味的"数据扫描任务"。这种高饱和…...

▲D2D通信中基于Qlearning强化学习算法的联合资源分配与功率控制算法matlab仿真

目录 📶1.引言 🧠2.系统模型 2.1 网络拓扑 2.2 信号与干扰模型 2.3 容量与吞吐量 2.4 优化目标 ✅3.基于Q学习的联合资源分配与功率控制算法原理 3.1 状态空间定义 3.2 动作空间定义 3.3 奖励函数设计 3.4 Q值更新规则 📚4.MATLA…...

Abaqus 2023保姆级教程:手把手教你搞定金属管无芯绕弯的完整仿真流程

Abaqus 2023金属管无芯绕弯仿真全流程实战指南 金属管件弯曲成形是制造业中常见的加工工艺,而有限元仿真技术能够大幅降低实际试错成本。本文将基于Abaqus 2023版本,完整演示从零开始建立金属管无芯绕弯仿真模型的全过程。不同于简单操作演示&#xff0c…...