引言
在现代数据密集型应用中,高效的检索引擎至关重要。NeuralDB是由ThirdAI开发的一种CPU友好的检索引擎,其特性是可微调,并能够高效执行大规模检索任务。本文将介绍NeuralDB的初始化、文档插入、检索及微调方法,为开发者提供实用指南。
主要内容
1. 初始化NeuralDB
NeuralDB提供了两种初始化方法:
- 从零开始:适用于创建一个新的基础模型。
- 从检查点加载:适用于加载已保存的模型。
在使用这些方法时,可以通过设置THIRDAI_KEY
环境变量省略thirdai_key
参数。API密钥可以在ThirdAI官网获取。
从零开始
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"
)
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
)
对于其他格式,使用NeuralDB文档对象:
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
方法进行检索,返回LangChain文档对象列表。
# 进行查询,返回前10个相关文档
documents = retriever.invoke("query", top_k=10)
4. 微调NeuralDB
NeuralDB支持通过关联和加权来微调模型,适应用户行为和特定领域的知识。
关联
retriever.associate(source="source phrase", target="target phrase")
加权
retriever.upvote(query="how is a car manufactured", document_id=52)
常见问题和解决方案
- API连接不稳定:在某些地区,由于网络限制,可能需要使用API代理服务来确保访问稳定性。
- 性能问题:使用
fast_mode=True
可以加快插入速度,但可能略微影响性能。
总结和进一步学习资源
NeuralDB提供了灵活的文档插入和检索方法,并支持微调以适应特定需求。开发者可以进一步阅读以下资源以深入了解:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—