探索NeuralDB:CPU友好的可调检索引擎

51 阅读2分钟

引言

NeuralDB是由ThirdAI开发的一款CPU友好的可调检索引擎,旨在提高文档检索效率。本文旨在详细介绍NeuralDB的初始化、文档插入、检索和微调方法,并提供实用的代码示例及常见问题的解决方案。

主要内容

NeuralDB的初始化

NeuralDB提供了两种初始化方式:从头开始和从检查点加载。无论使用哪种方法,thirdai_key参数都可以省略,只需设置THIRDAI_KEY环境变量。API密钥可以通过ThirdAI官网获取。

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",
)

插入文档源

NeuralDB支持以多种格式插入文档源,并允许选择是否进行无监督预训练。以下是使用文档路径和NeuralDB文档对象的两种插入方法。

# 使用文档路径插入
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

# 使用NeuralDB文档对象插入
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)

微调

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)])

常见问题和解决方案

  1. 初始化失败:确保API密钥正确且环境变量已设置。
  2. 文档插入缓慢:尝试启用fast_mode以加快插入速度。
  3. 检索结果不准确:利用微调方法,根据用户反馈进行调整。

总结和进一步学习资源

NeuralDB是一个高效且灵活的检索引擎,适合多种应用情境。通过本文的介绍和代码示例,您可以轻松上手并优化检索效果。欲了解更多细节,可以参考以下资源:

参考资料

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

---END---