EmbedAnything

EmbedAnything

Rust开发的多源数据嵌入生成框架

EmbedAnything是一个基于Rust的高效嵌入生成框架,支持处理文本、图像、音频等多种数据源。该框架具备本地嵌入、多模态处理、硬件加速等功能,可将生成的嵌入存储至向量数据库。其轻量级设计和高性能特性为AI开发人员提供了便捷的嵌入模型使用方案。

EmbedAnything嵌入式框架多模态RustCandleGithub开源项目
<p align="center"> <img width=400 src = "https://res.cloudinary.com/dltwftrgc/image/upload/v1712504276/Projects/EmbedAnything_500_x_200_px_a4l8xu.png"> </p> <div align="center">

Downloads Open in Colab ![license](https://raw.githubusercontent.com/StarlightSearch/EmbedAnything/main/ https://img.shields.io/badge/License-Apache-blue.svg) ![package](https://raw.githubusercontent.com/StarlightSearch/EmbedAnything/main/ https://img.shields.io/badge/Package-PYPI-blue.svg) discord

</div> <div align="center"> <p align="center"> <b>使用简洁高效的Rust框架生成和流式传输您的嵌入🦀</b> <br /> <a href="https://starlightsearch.github.io/EmbedAnything/references/"><strong>探索文档 »</strong></a> <br /> <br /> <a href=https://youtu.be/HLXIuznnXcI>查看演示</a> · <a href="https://github.com/StarlightSearch/EmbedAnything/tree/main/examples">示例</a> · <a href="https://github.com/StarlightSearch/EmbedAnything/tree/main/examples/adapters">向量流适配器</a> . <a href="https://huggingface.co/spaces/akshayballal/search_in_audio">音频空间搜索</a> </p> </div>

EmbedAnything是一个极简但高性能、轻量级、极速的多源、多模态本地嵌入管道,由Rust构建。无论您是处理文本、图像、音频、PDF、网页还是其他媒体,EmbedAnything都可以简化从各种来源生成嵌入并将其流式传输到向量数据库的过程。

<!-- TABLE OF CONTENTS --> <details> <summary>目录</summary> <ol> <li> <a href="#about-the-project">关于本项目</a> <ul> <li><a href="https://github.com/StarlightSearch/EmbedAnything?tab=readme-ov-file#the-benefit-of-rust-for-speed">以Rust构建</a></li> <li><a href="https://github.com/StarlightSearch/EmbedAnything?tab=readme-ov-file#why-candle">为什么选择Candle?</a></li> </ul> </li> <li> <a href="https://github.com/StarlightSearch/EmbedAnything?tab=readme-ov-file#-getting-started">入门</a> <ul> <li><a href="https://github.com/StarlightSearch/EmbedAnything?tab=readme-ov-file#-installation">安装</a></li> </ul> </li> <li><a href="https://github.com/StarlightSearch/EmbedAnything?tab=readme-ov-file#-getting-started">使用</a></li> <li><a href="https://github.com/StarlightSearch/EmbedAnything?tab=readme-ov-file#roadmap">路线图</a></li> <li><a href="https://github.com/StarlightSearch/EmbedAnything?tab=readme-ov-file#quick-start">贡献</a></li> <li><a href="https://github.com/StarlightSearch/EmbedAnything?tab=readme-ov-file#Supported-Models">如何添加自定义模型和块大小</a></li> </ol> </details>

🚀 主要特性

  • 本地嵌入: 支持BERT和JINA等本地嵌入模型
  • 云端嵌入模型: 支持OpenAI,即将支持Mistral和Cohere
  • 多模态: 支持文本源如PDF、txt、md,图像JPG,音频.WAV
  • Rust: 所有文件处理都是用Rust进行,以获得速度和效率
  • Candle: 我们还处理了硬件加速,使用了Candle。
  • Python接口: 打包为Python库,可无缝集成到现有项目中。
  • 可扩展: 将嵌入存储在向量数据库中,以便轻松检索和扩展。
  • 向量流: 如果您的资源有限,可以持续创建和流式传输嵌入。

🦀 为什么选择EmbedAnything

➡️执行更快速。<br /> ➡️内存管理:Rust同时强制执行内存管理,防止内存泄漏和崩溃。<br /> ➡️真正的多线程<br /> ➡️本地和高效地运行语言模型或嵌入模型<br /> ➡️Candle允许直接在CUDA启用的GPU上进行推理。<br /> ➡️降低EmbedAnything的内存使用。

⭐ 支持的模型

我们支持一系列可由Candle支持的模型,我们提供了一组经过测试的模型,但如果您有特定的用例,请在issues中提出。

如何添加自定义模型和块大小。

jina_config = JinaConfig( model_id="Custom link given below", revision="main", chunk_size=100 ) embed_config = EmbedConfig(jina=jina_config)

这是一个英语到中文的翻译,请提供这个源文本的中文翻译。 不要提供任何解释或文本,除了翻译。 请注意:翻译需要符合中文语序、流程和通顺性。 需要翻译的源文本被包裹在XML标签中。

模型自定义链接
Jinajinaai/jina-embeddings-v2-base-en
jinaai/jina-embeddings-v2-small-en
Bertsentence-transformers/all-MiniLM-L6-v2
sentence-transformers/all-MiniLM-L12-v2
sentence-transformers/paraphrase-MiniLM-L6-v2
Clipopenai/clip-vit-base-patch32
Whisper大多数来自huggingface的OpenAI Whisper模型

🧑‍🚀 入门

💚 安装

pip install embed-anything

使用

使用本地嵌入:我们支持Bert和Jina

import embed_anything data = embed_anything.embed_file("file_path.pdf", embeder= "Bert") embeddings = np.array([data.embedding for data in data])

用于多模态嵌入:我们支持CLIP

需求 带有猫、狗等图片的目录,例如我们有test_files

import embed_anything data = embed_anything.embed_directory("directory_path", embeder= "Clip") embeddings = np.array([data.embedding for data in data]) query = ["photo of a dog"] query_embedding = np.array(embed_anything.embed_query(query, embeder= "Clip")[0].embedding) similarities = np.dot(embeddings, query_embedding) max_index = np.argmax(similarities) Image.open(data[max_index].text).show()

使用Whisper进行音频嵌入

需求: 音频.wav文件

import embed_anything from embed_anything import JinaConfig, EmbedConfig, AudioDecoderConfig import time start_time = time.time() # 从 https://huggingface.co/distil-whisper或 https://huggingface.co/collections/openai/whisper-release-6501bba2cf999715fd953013 选择任何whisper或 distilwhisper模型 audio_decoder_config = AudioDecoderConfig( decoder_model_id="openai/whisper-tiny.en", decoder_revision="main", model_type="tiny-en", quantized=False, ) jina_config = JinaConfig( model_id="jinaai/jina-embeddings-v2-small-en", revision="main", chunk_size=100 ) config = EmbedConfig(jina=jina_config, audio_decoder=audio_decoder_config) data = embed_anything.embed_file( "test_files/audio/samples_hp0.wav", embeder="Audio", config=config ) print(data[0].metadata) end_time = time.time() print("时间花费: ", end_time - start_time)

🚧 为EmbedAnything做贡献

首先,非常感谢你为这个项目做出贡献。我们非常感谢你的贡献,无论是错误报告、功能建议还是拉取请求。你的时间和精力在这个项目中都是非常宝贵的。 🚀

这个文档提供了一些指导方针和最佳实践,帮助你更有效地做出贡献。这些只是作为指导方针,而不是严格的规则。我们鼓励你根据自己的最佳判断来使用,并通过拉取请求来提出对这个文件的更改建议。

路线图

EmbedAnything的目标之一是允许AI工程师在典型的文件和文档上轻松使用最新的嵌入模型。这里已经完成了很多工作,以下是我们目前支持的格式,还有一些需要完成。<br /> ✅ Markdown、PDF和网站<br /> ✅ WAV文件<br /> ✅ JPG、PNG、webp<br /> ✅为音频嵌入添加whisper<br /> ✅上传自定义模型,任何在candle中可用的模型<br /> ✅自定义块大小<br /> ✅Pinecone适配器,直接保存在上面<br /> ✅零shot应用<br />

还需要完成的<br /> ☑️ 矢量数据库:添加与任何矢量数据库集成的功能<br /> ☑️ 图嵌入 -- 建立deepwalks嵌入深度优先和词到向量<br />

✔️ 行为准则:

请阅读我们的[行为准则],了解我们对所有参与这个项目的贡献者的期望。通过参与,你同意遵守我们的行为准则。

快速入门

你可以通过搜索[Issues Section]中带有"Good First Issue"或"Help Needed"标签的问题,快速开始参与贡献。如果你认为你可以做出贡献,请在问题上发表评论,我们会将其指派给你。

要设置你的开发环境,请按照以下步骤操作:

  1. 从dev分支fork仓库,我们不允许直接向main分支贡献

贡献指南

🔍 报告错误

  1. 清楚简洁地描述问题的标题,并使用相关的标签
  2. 提供问题的详细描述和重现该问题的必要步骤。
  3. 包括任何相关的日志、截图或其他有助于问题的有用信息。

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多