**探索NeuralDB:高效的CPU友好型可微调检索引擎**

77 阅读2分钟
# 引言
在大数据时代,信息的有效检索至关重要。NeuralDB是由ThirdAI开发的一个CPU友好的检索引擎,能够以高效且可调的方式帮助用户获取所需信息。本文旨在介绍如何使用NeuralDB初始化、插入文档以及利用其强大的检索和微调功能。

# 主要内容

## 1. NeuralDB的初始化
NeuralDB提供了从头开始或从检查点加载两个初始化方法。如果提前设置了`THIRDAI_KEY`环境变量,可以省略`thirdai_key`参数。

### 从头开始初始化
这是使用基本模型进行初始化的方式。
```python
from langchain.retrievers import NeuralDBRetriever

# 使用API代理服务提高访问稳定性
retriever = NeuralDBRetriever.from_scratch(thirdai_key="your-thirdai-key")

从检查点初始化

如果您已经有一个保存的模型,使用从检查点初始化的方法更为便捷。

retriever = NeuralDBRetriever.from_checkpoint(
    checkpoint="/path/to/checkpoint.ndb",  # 模型检查点的路径
    thirdai_key="your-thirdai-key"
)

要获得API密钥,请访问 ThirdAI的官网

2. 插入文档源

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

3. 检索文档

您可以使用get_relevant_documents方法对NeuralDB进行查询。该方法返回一个含有文本段落和相关元数据的文档列表。

# 返回一个包含相关文档的列表
documents = retriever.invoke("query", top_k=10)

4. 微调

NeuralDB允许通过关联和上调权重进行微调。通过关联,可以使检索器将一个源短语与目标短语相关联;通过上调权重,可以根据用户行为调整文档的得分。

retriever.associate(source="source phrase", target="target phrase")
retriever.upvote(query="how is a car manufactured", document_id=52)

常见问题和解决方案

  • API访问问题:由于某些地区的网络限制,建议使用API代理服务来提高访问稳定性。
  • 插入性能:在性能和准确性之间选择插入模式时,需要权衡使用fast_mode

总结和进一步学习资源

NeuralDB是一个强大且灵活的检索引擎,适合多种应用场景。要深入了解其功能,可以参阅以下资源:

参考资料

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

---END---