Project Icon

EmbedAnything

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

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

使用简洁高效的Rust框架生成和流式传输您的嵌入🦀
探索文档 »

查看演示 · 示例 · 向量流适配器 . 音频空间搜索

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

目录
  1. 关于本项目
  2. 入门
  3. 使用
  4. 路线图
  5. 贡献
  6. 如何添加自定义模型和块大小

🚀 主要特性

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

🦀 为什么选择EmbedAnything

➡️执行更快速。
➡️内存管理:Rust同时强制执行内存管理,防止内存泄漏和崩溃。
➡️真正的多线程
➡️本地和高效地运行语言模型或嵌入模型
➡️Candle允许直接在CUDA启用的GPU上进行推理。
➡️降低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工程师在典型的文件和文档上轻松使用最新的嵌入模型。这里已经完成了很多工作,以下是我们目前支持的格式,还有一些需要完成。
✅ Markdown、PDF和网站
✅ WAV文件
✅ JPG、PNG、webp
✅为音频嵌入添加whisper
✅上传自定义模型,任何在candle中可用的模型
✅自定义块大小
✅Pinecone适配器,直接保存在上面
✅零shot应用

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

✔️ 行为准则:

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

快速入门

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

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

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

贡献指南

🔍 报告错误

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

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号