引言
在现代数据驱动的世界中,能有效管理和查询大量的非结构化数据至关重要。ThirdAI 的 NeuralDB 提供了一种 CPU 友好的可调向量存储解决方案,能够支持从零开始的模型构建和从已有检查点加载的灵活性。本篇文章将深入探讨如何初始化、插入文档、执行相似性搜索以及如何对NeuralDB进行细微调整。
主要内容
初始化
NeuralDB 提供了两种初始化方法:
- 从头开始:创建一个全新的模型。
- 从检查点开始:加载之前保存的模型。
以下是初始化的基本代码示例。在使用之前,请确保已安装 langchain-community:
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 支持直接插入多种格式的文档(PDF, DOCX, CSV)。您可以选择通过快速模式进行插入,尽管这可能会导致性能略有下降。
# 使用API代理服务提高访问稳定性
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)
每个返回的 Document 对象包含了文档片段的文本和相关的元数据。
细微调整
为了增强搜索结果的相关性,NeuralDB 提供了两种细微调整的方法:
- 关联:将源短语与目标短语关联。
- 提升:对于特定查询,提高某些文档的分数。
# 关联短语
vectorstore.associate(source="source phrase", target="target phrase")
# 提升特定文档
vectorstore.upvote(query="how is a car manufactured", document_id=52)
常见问题和解决方案
问题 1:初始化错误:确保第三方 API 密钥(thirdai_key)正确且可用。您可以通过 THIRDAI_KEY 环境变量设置默认密钥。
问题 2:文档插入失败:检查文档路径是否正确,并确保文件格式被支持。
问题 3:搜索结果不准确:使用细微调整方法进行关联和提升,以改善结果相关性。
总结和进一步学习资源
NeuralDB 为开发者提供了灵活的向量存储解决方案,尤其适合需要在有限计算资源环境中运行的应用程序。建议深入阅读以下资源以获取更多指导:
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---