[博客翻译]Radient:数据转向器,让多种类型的数据融入相似搜索


原文地址:https://github.com/fzliu/radient


简介:

Radient是一个轻量级且开发者友好的库,它能将各种数据类型(不只是文本)转换为向量,便于进行相似性搜索。在利用RAG(Retrieval-Augmented Generation)技术的应用中,向量数据库常被用来检索与查询相关的内容。随着大模态模型(如Reka和Fuyu)的发展以及推荐和语义搜索等传统任务的兴起,向量的应用范围正在扩大,不再局限于文本领域。

安装指南:

要使用Radient,只需在命令行中输入:

pip install radient

为什么选择Radient?

尽管目前主要用于文本,但随着技术进步,向量将在音频、图像、图形和分子等多种数据类型中普及。Radient提供了一种通用的方式来处理这些多样化的需求。

入门示例:

通过以下代码,你可以开始对字符串进行向量化:

>>> from radient import text_vectorizer
>>> vectorizer = text_vectorizer()
>>> vectorizer.vectorize("Hello, world!")
Vector([-3.21440510e-02, -5.10351397e-02,  3.69579718e-02, ...

你可以根据需要选择不同的模型,如:

>>> vectorizer_mbai = text_vectorizer(method="sbert", model_name_or_path="mixedbread-ai/mxbai-embed-large-v1")
>>> vectorizer_mbai.vectorize("Hello, world!")
Vector([ 0.01729078,  0.04468533,  0.00055427, ...

支持的数据类型:

除了文本,Radient还支持音频、分子结构和图像的向量化:

>>> from pathlib import Path
>>> from radient import audio_vectorizer, molecule_vectorizer
>>> audio_vectorizer().vectorize(str(Path.home() / "audio.wav"))
Vector([-5.26519306e-03, -4.55586426e-03,  1.79212391e-02, ...
>>> molecule_vectorizer().vectorize("O=C=O")  # O=C=O == SMILES string for CO2
Vector([False, False, False, ...

结果向量可以附加元数据,并存储到像Milvus这样的存储库中。

> > > vector = vectorizer.vectorize("My name is Slim Shady")
> > > vector.add_key_value("artist", "Eminem")  # {"artist": "Eminem"}
> > > vector.store(collection_name="_radient", field_name="vector")
> > > {'insert_count': 1, 'ids': [449662764050547785]}

性能优化:

对于大量数据的生产环境,性能至关重要。Radient提供了accelerate函数来实时优化某些向量器:

>>> vectorizer.vectorize("Hello, world!")  # runtime: ~32ms
Vector([-3.21440510e-02, -5.10351397e-02,  3.69579718e-02, ...
>>> vectorizer.accelerate()
>>> vectorizer.vectorize("Hello, world!")  # runtime: ~17ms
Vector([-3.21440622e-02, -5.10351285e-02,  3.69579904e-02, ...

未来展望:

Radient团队计划增加更多功能,如稀疏、二进制和多向量支持,以及与Huggingface上更多模型的兼容性,还有从云存储和协作平台导入数据的能力。

关于Radient:

Radient致力于将多种数据类型转化为向量,以支持更广泛的相似搜索应用。