Project Icon

vectordb

本地化嵌入模型文本检索,优化AI应用性能

VectorDB是一款简单轻量的本地嵌入模型文本检索工具,具有低延迟和小内存占用的特点,广泛应用于Kagi Search的AI功能。通过自动分块和嵌入搜索,VectorDB在完全本地运行的情况下提供了高效的内容过滤和检索功能。用户可以通过简单的代码示例快速加载数据并进行检索,还可根据需求选择不同的嵌入模型和分块策略,以适应多种应用场景。

项目介绍:VectorDB

VectorDB 是一个简单、轻量且完全本地的端到端解决方案,专门用于基于嵌入的文本检索。依靠其低延迟和小内存占用的特性,VectorDB 被用于驱动 Kagi Search 中的 AI 功能。

用户可以通过 Colab 示例笔记 了解如何使用 VectorDB 根据用户兴趣从 Kagi Small Web 的 RSS 源中筛选内容。

安装方法

用户可以通过 pip 安装 VectorDB:

pip install vectordb2

使用示例

以下是一个快速示例,展示如何将数据加载到内存并运行检索操作。所有数据处理,包括嵌入和向量搜索,都将在本地完成,对用户完全透明,确保了最大的性能。

from vectordb import Memory

# Memory 是存储与搜索内容的地方。
memory = Memory()

memory.save(
    ["apples are green", "oranges are orange"],  # 保存文本内容,对于长文本会自动分块
    [{"url": "https://apples.com"}, {"url": "https://oranges.com"}], # 可以为文本关联任意元数据(可选)
)

# 搜索最相关的结果,自动使用嵌入
query = "green"
results = memory.search(query, top_n=1)

print(results)

这将返回匹配块及所附元数据和向量距离(0表示精确匹配,数值越高表示差异越大)。

选项配置

Memory 类构造

  • memory_file: 可选参数。指定内存文件的路径。如果提供,将内存持久化到磁盘,并加载/保存到这个文件。

  • chunking_strategy: 可选参数。包含分块模式的字典。

    选项:

    • {'mode':'sliding_window', 'window_size': 240, 'overlap': 8} 默认设置
    • {'mode':'paragraph'}
  • embeddings: 可选参数。指定嵌入选项:

    • fast: 使用 Universal Sentence Encoder 4
    • normal: 使用 "BAAI/bge-small-en-v1.5" 默认设置
    • best: 使用 "BAAI/bge-base-en-v1.5"
    • multilingual: 使用 Universal Sentence Encoder Multilingual Large 3

用户还可以通过指定 HuggingFace 模型名称来使用自定义模型,例如 TaylorAI/bge-micro-v2。相关信息也可在 Pretrained modelsMTEB 获取。

Memory.save(texts, metadata, memory_file=None)

将内容保存到内存中。元数据将自动优化以减少资源使用。

  • texts: 必需参数。要保存的文本或文本列表。
  • metadata: 可选参数。与文本关联的元数据或元数据列表。
  • memory_file: 可选参数。用于持久化内存文件的路径。

Memory.search(query, top_n=5, unique=False, batch_results="flatten")

在内存中进行搜索。

  • query: 必需参数。查询文本或查询列表。
  • top_n: 可选参数。返回最相似的片段数量(默认:5)。
  • unique: 可选参数。仅返回来自唯一原始文本的项目片段(来自同一文本的其他片段将被忽略)。注意,这可能返回的片段数量少于请求数(默认:False)。
  • batch_results: 可选参数。当输入为查询列表时,输出算法可以是 "flatten" 或 "diverse"。Flatten 返回所有输入查询中的最近邻居,意味着所有结果可能都来自一个查询。"diverse" 尝试分散结果,以便每个查询的最近邻居都被平等地添加(首先是所有查询中的最近邻居,然后是第二近的,以此类推)。(默认:"flatten")

Memory.clear()

清空内存。

Memory.dump()

打印内存的内容。

使用示例

以下是更为详细的使用示例:

from vectordb import Memory

memory = Memory(
    chunking_strategy={"mode": "sliding_window", "window_size": 128, "overlap": 16}, embeddings='TaylorAI/bge-micro-v2'
)

texts = [
    """
    Machine learning 是一种用于自动化分析模型构建的数据分析方法。
    它是基于系统可以从数据中学习、识别模式并在最小的人类干预下做出决策的人工智能分支。
    机器学习算法训练的是包含期望输出实例的数据集。例如,用于分类图像的机器学习算法可能会在包含猫和狗图像的数据集上进行训练。一旦算法完成训练,它可以用于新数据的预测。例如,用于分类图像的机器学习算法可以用于预测新图像中是否包含猫或狗。
    机器学习算法可用于解决多种问题。一些机器学习的常见应用包括:
    分类: 将数据分类为不同组别。例如,机器学习算法可用于将电子邮件分类为垃圾邮件或非垃圾邮件。
    回归: 预测连续值。例如,机器学习算法可用于预测房屋的价格。
    聚类: 寻找相似数据点的组别。例如,机器学习算法可用于寻找具有相似购买习惯的客户组。
    异常检测: 发现与其他数据不同的数据点。例如,机器学习算法可用于查找欺诈性信用卡交易。
    机器学习是一种强大的工具,可以用来解决多种问题。随着可用数据的不断增长,机器学习在未来可能会变得更加重要。
    """
]

metadata_list = [
    {
        "title": "Introduction to Machine Learning",
        "url": "https://example.com/introduction-to-machine-learning",
    }
]

memory.save(texts, metadata_list)

query = "What is the relationship between AI and machine learning?"
results = memory.search(query, top_n=3, unique=True)
print(results)

结果示例:

[
  {
    "chunk": "Artificial intelligence (AI) 的描述……",
    "metadata": {
      "title": "Introduction to Artificial Intelligence",
      "url": "https://example.com/introduction-to-artificial-intelligence"
    },
    "distance": 0.87
  },
  {
    "chunk": "Machine learning 的描述……",
    "metadata": {
      "title": "Introduction to Machine Learning",
      "url": "https://example.com/introduction-to-machine-learning"
    },
    "distance": 0.83
  }
]

嵌入性能分析

VectorDB 中的嵌入模型通过标准化基准在不断评估。基准数据来自 MTEB

ModelLatencyBenchmark 1Benchmark 2Benchmark 3Benchmark 4
all-mpnet-base-v26.12 s80.2865.0743.6983.04

图表和详细分析数据可以参考文本中的其他图像或网站链接。

向量搜索性能分析

VectorDB 也经过优化以提升检索速度。我们自动采用 Faissmrpt 以确保适用各种使用场景的最高性能。

许可证

VectorDB 遵循 MIT 许可证。

项目侧边栏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号