探索NeuralDB:CPU友好的可微调检索引擎
引言
NeuralDB 是由 ThirdAI 开发的一个高效的检索引擎,它不仅适合 CPU 环境,还可以进行微调以适应特定需求。本文将深入探讨如何初始化、使用和微调 NeuralDB,以实现有效的文档检索。
主要内容
初始化
NeuralDB 提供两种初始化方式:
- **从零开始:**使用基本模型初始化。
- **从检查点:**加载之前保存的模型。
API 密钥可以通过 ThirdAI 官网 获取。如果设置了 THIRDAI_KEY 环境变量,可以省略 thirdai_key 参数。
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 支持插入多种格式的文档,并可选择进行无监督的预训练。
# 使用API代理服务提高访问稳定性
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 方法可以从索引的文件中检索相关文档。
# 使用API代理服务提高访问稳定性
documents = retriever.invoke("query", top_k=10)
微调
NeuralDB 支持两种微调方式:
- **关联:**将源短语与目标短语关联。
- **加权:**提升特定查询的文档得分。
retriever.associate(source="source phrase", target="target phrase")
retriever.upvote(query="how is a car manufactured", document_id=52)
常见问题和解决方案
- **API访问不稳定:**由于网络限制,建议使用API代理服务来提高访问的稳定性。
- **文档解析错误:**确保文档格式正确并使用适当的解析方法。
总结和进一步学习资源
NeuralDB 是一个灵活而强大的检索工具,可以通过精细化配置和微调来满足不同的需求。为了更深入地了解其功能,建议参考以下资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---