老铁们,今天咱们来聊聊 NeuralDB,这可是由 ThirdAI 开发的一款相当实用的 CPU 友好的检索引擎。说白了,这东西就是为了解决高效检索的问题,尤其是在硬件资源有限的情况下。接下来,我会带你们看看如何初始化、插入文档、获取文档以及进行微调。让我们先从背景介绍开始。
技术背景介绍
NeuralDB 是 ThirdAI 开发的检索引擎,它最大的亮点就是在 CPU 上也能高效运行,并且支持微调。对于那些不想依赖GPU的项目来说,这波操作可以说是相当丝滑。无论你是从头开始还是从检查点加载模型,NeuralDB 都能提供灵活的初始化方式。
原理深度解析
NeuralDB 支持两种初始化方式:从头构建和从检查点加载。初始化时,你可以选择提供 THIRDAI_KEY 环境变量来管理 API 密钥。这些密钥可以从 这里 获取。
代码示例
from langchain.retrievers import NeuralDBRetriever
# 从头开始
retriever = NeuralDBRetriever.from_scratch(thirdai_key="your-thirdai-key")
# 从检查点加载
retriever = NeuralDBRetriever.from_checkpoint(
checkpoint="/path/to/checkpoint.ndb",
thirdai_key="your-thirdai-key",
)
实战代码演示
让我们动手试试如何插入文档。NeuralDB 支持直接插入包括 PDF、DOCX、CSV 等多种格式的文件。插入时还有两种模式可选:快速模式和详细训练模式。
retriever.insert(
sources=["/path/to/doc.pdf", "/path/to/doc.docx", "/path/to/doc.csv"],
train=True,
fast_mode=True,
)
如果你有其他格式的文件,或者想自定义解析方式,可以使用 neural_db 对象。
from thirdai import neural_db as ndb
retriever.insert(
sources=[
ndb.PDF(
"/path/to/doc.pdf",
version="v2",
chunk_size=100,
metadata={"published": 2022},
),
ndb.Unstructured("/path/to/deck.pptx"),
]
)
优化建议分享
在使用 NeuralDB 进行文档检索时,可以通过 get_relevant_documents 方法来获取相关文档,返回的可是个包含文本段落和元数据的列表。
documents = retriever.invoke("query", top_k=10)
如果想要微调 NeuralDB,让它更加符合你的业务场景,可以通过关联和调整权重来实现个性化的检索结果。
# 关联源短语和目标短语
retriever.associate(source="source phrase", target="target phrase")
# 调整文档的权重
retriever.upvote(query="how is a car manufactured", document_id=52)
补充说明和总结
为了更好地使用 NeuralDB,你还可以参考其 概念指南 和 操作指南。说到这,我个人一直在用 NeuralDB 提供的数据处理能力,稳定又高效。
今天的技术分享就到这里,希望对大家有帮助。开发过程中遇到问题也可以在评论区交流~
—END—
460

被折叠的 条评论
为什么被折叠?



