技术分享预告|DocArray x Redis 比快更快的向量搜索

news/2024/4/20 16:49:18/文章来源:https://blog.csdn.net/Jina_AI/article/details/127255696

44b6dc526a8459030440d41f6f4d0a9f.png

从国内的学生开发者,到深入参与国际化开源社区。小燕主动出击,不放过任何一个贡献机会。快来看看原子能科学研究院核物理专业小姐姐的神仙输出!

北京时间 10 月 11 号,本周二晚 10 点,小燕将在 Zoom 平台,面向全球开发者,进行全英文技术分享《Lightning fast Vector Search with DocArray and Redis》

复制 https://jina-ai.zoom.us/j/83482637740 到浏览器,或点击阅读原文,即可加入直播

作者介绍

Jina AI 社区 DocArray 贡献者杨小燕,中国原子能科学研究院的核能科学与工程专业硕士二年级在读,本科毕业于清华大学工程物理系。

分享项目简介

项目名称:支持基于 Redis 的近似最近邻搜索

项目描述:神经搜索特指使用人工神经网络模型的搜索系统。很多常见的搜索应用,比如以图搜图,听声辨乐,都需要神经搜索。在神经搜索系统中,所有的文件会通过人工神经网络被表示为一个向量并存储在索引中。当用户进行搜索时,用户的查询目标也会被表示为一个向量。通过比较查询向量与索引向量的相似度/距离,我们可以找到最为匹配的文件。

基于神经网络的搜索通常需要在短时间内查询到最相似的文件。这依赖于近似最近邻搜索(Approximately Nearest Neightbour Search),简称 ANN 搜索。作为一个前沿研究领域,学者们已经提出很多高效的 ANN 算法。Redis 数据库目前已经支持基于图的 ANN 搜索算法:HNSW,该算法能够最大程度的达到检索召回率和检索时间的平衡。

DocArray 作为 Jina AI 神经搜索全家桶的底层模块,能够帮助开发者快速开发者快速搜索系统。在DocArray 中,我们已经支持了多种向量数据库作为存储后台,如 ANNLite,Weaviate,Qdrant 以及 Elasticsearch。为了帮助 Redis 社区的开发者,我们希望支持 Redis 数据库作为 DocArray 的存储后台,帮助用户高效的进行向量检索。

项目要求:

  • 需要在 DocArray 中集成 Redis 作为存储后台 

  • 代码有完整的文档及单元测试、集成测试 

  • 需要在 DocArray 中产出 Redis ANN 搜索的基准

项目导师:王博

项目链接:https://summer-ospp.ac.cn/#/org/prodetail/2203b0299

开发详情

初识项目

在浏览今年的社区及项目列表时,Jina 及其神经搜索的概念一下子吸引了我,于是我向项目导师王博发送了咨询邮件。导师不仅很快回复,还向我详细介绍了DocArray和项目意义。Neural Search 可以实现跨模态的搜索,使搜索不再局限于文本匹配,而使用 DocArray 可以快速对一组非结构化的数据进行表征,实现 Docarray 的 Redis 数据库支持,不仅能将数据存储在Redis中,更能使用 RedisSearch 模块实现高效的向量搜索。导师的沟通不仅让我快速学习了相关背景,也让我感受到社区热情友好的氛围。

项目开发

7 月份,我主要进行了 DocArray 与 Redis 的学习、项目技术方案的设计,并将较为详细的项目技术方案展示给来自世界各国的社区维护者。8 月份,在详细设计的基础上,我得以快速实现 DocumentArrayRedis 类,包括 DocArray 与 Redis 数据库的交互、数据的增删改查和向量搜索功能。9 月份,我进一步补充了多种搜索逻辑和全文搜索功能,并在 Jina 社区做了多次中英文的项目成果分享。

主要成果

ea83cdd1b47bfc17ddcb3fd98be5e14f.pngDocArray x Redis 向量搜索

6a6cb5bd861540bfdb53641ec0ebfc5a.png输出结果

a6bf2febb85d16c0986fccb452cf06d1.pngDocArray x Redis 全文搜索

9c4011cfd01ae746b8d45eb057e53904.png输出结果

更多成果请点击:https://docarray.jina.ai/advanced/document-store/redis/

开发者随访

Q(开源之夏小助手):这是你第二次参加开源之夏了,为什么选择参与开源之夏?

A(小燕): 作为非计算机专业的学生,参与开源是非常好的提升技术的方式。开源之夏不仅汇集了丰富的社区和选题,更通过高质量的活动组织让我能获得导师和社区的指导以及与其他同学的交流。

Q(开源之夏小助手):在项目开发过程中遇到到印象最深刻的困难/问题是什么?是如何解决的呢?

A(小燕): 今年的项目是实现 Docarray 的 Redis 数据库支持,功能中很多与Redis结合的功能都非常“小众”,Redis 官方文档均为 Redis 命令的解释“字符串”组成的解释说明,而目前 redis-py 包中search 相关命令的手册和使用示例则少之又少,因此我必须通过阅读源码来使用 redis-py 并用优雅的 Python 代码实现所需功能。在这个过程中我还顺便发现了 redis-py 的小 Bug,并向对方社区提出了 Issue 和 PR。

Q(开源之夏小助手):你是从什么时候开始接触开源的?有什么特别的经历吗?

A(小燕): 我是从2021年参与 openEuler 高校开发者大赛及随后的开源之夏活动开始真正参与开源的。今年的项目 DocArray x Redis 的结合,使得 Jina AI 社区与 Redis 社区建立了交流与合作;在项目开发期间,DocArray 登上 GitHub Trending 并增长至 1100 star;项目的有关 PR 也在 DocArray 的新功能 release 中被提及;通过中英文平台公开分享项目内容……看到自己的贡献能随着社区发展获得一些关注,非常有成就感。

Q(开源之夏小助手):在开源社区里学习工作时一种什么体验?

A(小燕): Jina AI 社区是一个活跃且全球化的社区。在导师的帮助下,我与社区其他核心成员有了充分的交流,在不同方案中纠结时他们会提出建议,每次提交 PR 后也会共同 review,使得相关功能的完成更加细致与完美。同时社区成员来自世界各国,也“迫使”我的英语口语能力在短期内快速提升。

Q(开源之夏小助手):给准备参与开源之夏的学弟学妹们一些建议吧

A(小燕): 在项目申请阶段要对有兴趣的项目都应该勇于迈出第一步,去阅读相关的源码、文档,带着自己初步的思考与设计找导师沟通,才更有效率也更容易中选。

直播活动

 活动时间 

2022 年 10 月 11 日 周二晚 22:00 - 23:00

 报名方式 

复制 https://jina-ai.zoom.us/j/83482637740 到浏览器,或点击 阅读原文,即可加入网络研讨会。

更多精彩内容(点击图片阅读)

7e121d14bf53eb58c8e1d8045c5464ab.jpeg

a2982fa6197d3dbde05b493e31d62326.jpeg

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

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

相关文章

第03章 成人感冒不是大事,少往急诊跑

急诊是病菌最多的地方,能避则避我在安贞急诊工作了数个年头,最大的体会就是急诊像个大的农贸市场,每天人头攒动、人山人海、接踵摩肩、座无虚席、门庭若市、沸沸扬扬、热闹非凡、熙熙攘攘、车水马龙、人来人往……写了这么多词汇都不足以写出…

Redis(Jedis入门 Jedis连接池

本章导学: 什么是Jedis?Jedis入门案例 新建项目,导入依赖建立连接进行测试释放资源Jedis的连接池使用一、什么是Jedis Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C、php、Nod…

Spring IOC核心知识

控制反转(IOC: Inversion Of Control),把对象的创建和对象之间的调用过程都交给Spring管理,从而降低耦合度。 IOC底层原理 三大技术:XML解析、工厂模式、反射 IOC创建对象的过程: IOC重要接口 IOC容器底…

路径分析—QGIS+PostgreSQL+PostGIS+pgRouting(一)

前言 因业务需求,需要做最短路径分析。最近几天查询资料,并自己动手,实现了简单的路径分析。 下面就介绍具体的实现过程。 本篇文章最终结果是在 PostgreSQL 数据库中实现的,后续的可视化展示会继续跟进。 一、道路数据处理 如果你已经有了道路数据,那就直接使用。 由于当…

传统应用如何“丝滑”转型为云原生应用?

市场需求瞬息万变,传统型的应用逐渐无法满足业务侧要求,传统应用向云原生应用转型,已势在必行。本篇文章将介绍基于CloudOS(一站式云原生开发平台)如何实现传统应用向云原生应用的转型。 在此之前,我们需…

python基础(老师PPT)

slist [Alice,2019001, Geoscience, 95] # 使用分号加tab作为分隔符&#xff0c;连接字符串 print(;\t.join(slist))# a X if condition else Z # condition为True时&#xff0c;赋值为X&#xff0c;否则赋值为Z a, b 1, 2 c a > b if a > b else a < b print(c)…

分布式seata案例学习-2

上篇文章学习了如何安装seata&#xff0c;先学习如何使用 事务的4个特性ACID 事务特性 at模式详解 AT模式运行机制 AT模式的特点就是对业务无入侵式&#xff0c;整体机制分二阶段提交 两阶段提交协议的演变&#xff1a; 一阶段&#xff1a;业务数据和回滚日志记录在同一个本地…

【复习整理归纳】| C++面经网络相关(三)

文章目录计算机网络性能指标计算机在发送文件前需要做许多前期的工作分层结构概念OSI参考模型数据链路层ARP网络协议UDP套接字TCPTCP粘包三次握手四次握手为什么建立连接协议是三次握手&#xff0c;而关闭连接却是四次挥手呢&#xff1f;为什么TIME_WAIT状态还需要等2MSL后才能…

C++ | 12天学好C++ (Day 12)->结构图可视化、代码加通俗理解

为每天进步一点点而努力。 C是计算机视觉的重要的一部分&#xff0c;虽然在初始学习时Python应用比较广&#xff0c;但是大多数公司还是C做计算机视觉类的比较多&#xff0c;因为C可加密&#xff0c;所以我们来一起探索吧&#xff01;看了这系列博客&#xff0c;将会学到C的基…

#边学边记 必修4 高项:对事的管理 第4章 项目进度管理之 制定进度计划

制订进度计划的输入、工具与技术和输出 制定进度计划过程分析活动顺序、持续时间、资源需求和进度制约因素&#xff0c;创建项目进度模型的过程。主要作用是把活动、持续时间、资源、资源可用性和逻辑关系代入进度规划工具&#xff0c;从而形成包含各个项目活动的计划日期的进…

在docker安装的centos容器内设置远程链接

写在前面 写在前面 运维这个行业&#xff0c;不需要按照顺序学习。 比如你学会了基础命令&#xff0c;直接学docker和k8s&#xff0c;和学会了基础命令开始学服务难度差不多。 再比如你学会了基础命令直接学shell脚本&#xff0c;也能学的会。 所以我一直主张&#xff0c;…

WEB漏洞-文件操作之文件下载读取全解

目录 前言: (一&#xff09;前置知识 &#xff08;二&#xff09;文件下载读取漏洞利用 1、网站目录的获取&#xff1a; 0x01 字典 0x02 网络爬虫 0x03 fuzz 0x04 自动化工具 0x05 下载传参的脚步文件 0x06 配合其他漏洞 2、下载数据库,操作系统配置文件 0x01 Window…

非空约束

1.创建表时添加约束   创建完表后,添加非空约束 删除name的非空约束

Vue3.0----组件基础【上】(第二章)

一、单页面应用程序 1. 什么是单页面应用程序 单页面应用程序&#xff08;英文名&#xff1a;Single Page Application&#xff09;简称 SPA&#xff0c;顾 名思义&#xff0c;指的是一个 Web 网站中只有唯一的一个 HTML 页面&#xff0c;所有的 功能与交互都在这唯一的一个页…

(六)Shell编程之函数、脚本引用、符号展开、重定向

一、定义函数 shell中函数的定义格式如下&#xff1a; [ function ] funname [()] {action;[return int;] }说明&#xff1a; 可以带function fun()定义&#xff0c;也可以直接fun()定义&#xff0c;如果带function函数名后的小括号可以省略。返回值语句[return int;]可以不写…

软件项目管理:外包 outsourcing、采购 procurement、合同 contracts

文章目录外包不同类型为什么选择外包好处坏处采购 procurementplanning 阶段-弄清需求 & 市场 / 评估风险Source 阶段-确定供应商具体过程RFxState of Work (SOW)评估步骤 Evaluation processManage 阶段Contract 合同定义种类固定价格合同适用场景&#xff08;保守&#x…

稀疏矩阵的压缩存储

目录 稀疏矩阵的定义 稀疏矩阵的转置 代码实现 运行结果 稀疏矩阵的定义 假设在 m * n 的矩阵中&#xff0c;有 t 个元素不为零&#xff0c;且 t<<m*n&#xff0c;则称此矩阵为稀疏矩阵。按照常规的存储方法&#xff0c;稀疏矩阵很浪费内存空间&#xff0c;所以采取…

学习梦想家CMS内容管理系统-环境启动

gitee官网中项目的地址&#xff1a;首先准备里面提到的工具其中JDK8和MySQL5.7我们已经有了&#xff0c;现在需要准备另外的工具。 Spring Tool Suite 4&#xff08;STS&#xff09; 安装过程在《1-1-Spring Tool Suite 4&#xff08;STS&#xff09;的下载安装》 Redis 安装…

数字孪生在电网系统开发建设,如何选择可视化平台?

随着新能源发展规模持续增大&#xff0c;电网作为能源转换利用和输送配置的枢纽平台&#xff0c;其功能、结构和形态发生了深刻变化。同时&#xff0c;随着现代计算机技术发展&#xff0c;数字孪生成为电网向数字化转型、提高电网调度运行决策的准确性与实时性提供关键技术支撑…

初识数据库-MySQL数据库

文章目录数据库数据库的相关概念常见的关系型数据库管理系统MySQL数据库MySQL目录结构MySQL数据模型数据库 数据库的相关概念 数据库 存储数据的仓库&#xff0c;数据是有组织的进行存储英文&#xff1a; DataBase,简称 DB 数据库管理系统 管理数据库的大型软件英文&#xff…