EmbedAnything 使用教程

EmbedAnything 使用教程

EmbedAnything EmbedAnything is a minimalist yet highly Performant lightweight multimodal and local embedding solution, built on rust. EmbedAnything 项目地址: https://gitcode.com/gh_mirrors/em/EmbedAnything

1. 项目介绍

EmbedAnything 是一个用 Rust 语言编写的轻量级、多模态的嵌入管道项目。它支持从文本、图像、音频、PDF、网页等多种媒体格式生成嵌入向量,并且能够高效地将这些向量流式传输到向量数据库中。该项目支持多种嵌入模型,包括稠密、稀疏、ONNX 和晚期交互嵌入,适用于广泛的场景。

2. 项目快速启动

安装

首先,您需要安装 EmbedAnything。可以通过以下命令使用 pip 进行安装:

pip install embed-anything

如果您需要支持 GPU 以及特殊模型,如 ColPali,请使用以下命令安装:

pip install embed-anything-gpu

使用

本地嵌入使用

要使用本地的嵌入模型,目前支持 Bert 和 Jina 模型。以下是一个使用 Bert 模型嵌入 PDF 文件的例子:

from embed_anything import EmbeddingModel

# 加载 Bert 模型
model = EmbeddingModel.from_pretrained_local(
    WhichModel.Bert,
    model_id="Hugging_face_link"
)

# 嵌入 PDF 文件
data = embed_anything.embed_file(
    "test_files/test.pdf",
    embedder=model
)
多模态嵌入使用

对于多模态嵌入,目前支持 CLIP 模型。以下是一个使用 CLIP 模型嵌入图片文件夹的例子:

import embed_anything
from embed_anything import EmbedData

# 加载 CLIP 模型
model = embed_anything.EmbeddingModel.from_pretrained_local(
    embed_anything.WhichModel.Clip,
    model_id="openai/clip-vit-base-patch16"
)

# 嵌入图片文件夹
data: list[EmbedData] = embed_anything.embed_directory(
    "test_files",
    embedder=model
)

# 计算嵌入向量与查询的相似度
embeddings = np.array([data.embedding for data in data])
query = ["Photo of a monkey?"]
query_embedding = np.array(embed_anything.embed_query(query, embedder=model)[0].embedding)
similarities = np.dot(embeddings, query_embedding)
max_index = np.argmax(similarities)

# 显示最相似的图片
Image.open(data[max_index].text).show()

3. 应用案例和最佳实践

语义分块

在处理大型文件时,可以采用语义分块策略。以下是如何配置和使用语义分块:

# 配置语义分块
config = TextEmbedConfig(
    chunk_size=1000,
    batch_size=32,
    splitting_strategy="semantic",
    semantic_encoder=semantic_encoder
)

# 嵌入文件
data = model.embed_file(
    "test_files/attention.pdf",
    config=config
)

晚期分块

晚期分块是一种在分块过程中延迟决策的分块策略。以下是如何配置和使用晚期分块:

# 配置晚期分块
config = TextEmbedConfig(
    chunk_size=1000,
    batch_size=8,
    splitting_strategy="sentence",
    late_chunking=True
)

# 嵌入文件
data = model.embed_file(
    "test_files/attention.pdf",
    config=config
)

4. 典型生态项目

EmbedAnything 可以与多种生态项目集成,例如:

  • Elastic: 使用 EmbedAnything 生成文档的嵌入向量,然后在 ElasticSearch 中进行搜索和推荐。
  • Weaviate: 与 Weaviate 向量数据库集成,实现快速的向量搜索和检索。
  • SingleStore: 利用 SingleStore 数据库的高性能,存储和管理 EmbedAnything 生成的嵌入数据。

通过以上教程,您应该能够开始使用 EmbedAnything 并将其集成到您的项目中。

EmbedAnything EmbedAnything is a minimalist yet highly Performant lightweight multimodal and local embedding solution, built on rust. EmbedAnything 项目地址: https://gitcode.com/gh_mirrors/em/EmbedAnything

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

富茉钰Ida

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值