在这篇文章中,我们将探讨如何使用 ThirdAI 开发的 NeuralDB 来构建一个高效的向量数据库。NeuralDB 针对 CPU 进行了优化,并支持微调以增强其在特定领域的性能。我们将详细介绍其初始化、插入文档、相似性搜索和微调功能。
技术背景介绍
NeuralDB 是由 ThirdAI 开发的,专注于提供 CPU 友好的高性能向量存储解决方案。它适合处理大型文档集成,并且可以根据用户行为和领域知识进行微调。
核心原理解析
NeuralDB 的核心优势在于其高效的文档处理能力和灵活的微调整合。通过从头开始初始化或通过检查点加载,可以对模型进行预训练,以确保其对文档的处理更精准。同时,可以通过相似性搜索快速检索相关文档,并通过关联和投票机制来优化搜索结果。
代码实现演示
首先,确保安装所需的库:
pip install -qU langchain-community
初始化
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",
)
插入文档来源
NeuralDB 可以处理多种文档格式,并支持快速插入模式。
vectorstore.insert(
sources=["/path/to/doc.pdf", "/path/to/doc.docx", "/path/to/doc.csv"],
train=True,
fast_mode=True,
)
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.associate_batch(
[
("source phrase 1", "target phrase 1"),
("source phrase 2", "target phrase 2"),
]
)
# 上调文档与查询的匹配度
vectorstore.upvote(query="how is a car manufactured", document_id=52)
vectorstore.upvote_batch(
[
("query 1", 52),
("query 2", 20),
]
)
应用场景分析
NeuralDB 特别适用于需要处理大量文档数据的场景,如企业知识库、研究文档存储和大规模数据集索引等。其微调功能可以适应不同的行业需求,提高搜索结果的相关性。
实践建议
- 初始配置时根据需要选择合适的初始化方式。
- 使用
fast_mode
在大量文档插入时提高速度。 - 定期使用关联与投票机制微调数据库,以保持高效的搜索性能。
如果遇到问题欢迎在评论区交流。
—END—