如何获取Deeplake向量库全部文档并按文件名筛选?
Deeplake向量库:全量文档获取与元数据筛选方案
一、获取全部文档
你可以直接遍历Deeplake数据集的所有元素来获取全部文档,示例代码如下:
all_docs = [] # 遍历数据集每个条目 for item in db.dataset: # 提取内容和元数据,转换为Document对象(适配LangChain场景) doc = Document( page_content=item['text'].data()['value'], metadata=item['metadata'].data()['value'] ) all_docs.append(doc)
其中db是你的Deeplake向量库实例,若无需适配LangChain,直接提取原始数据即可。
二、按metadata.file_name筛选文档
方法1:遍历筛选
在遍历过程中加入文件名匹配条件,精准筛选目标文档:
target_file = "solid.min.js" filtered_docs = [] for item in db.dataset: metadata = item['metadata'].data()['value'] if metadata.get('file_name') == target_file: doc = Document( page_content=item['text'].data()['value'], metadata=metadata ) filtered_docs.append(doc)
方法2:利用LangChain集成的过滤能力
如果使用LangChain对接Deeplake,可直接在查询时传入过滤参数,无需全量遍历:
target_file = "solid.min.js" # 用空查询配合过滤条件获取匹配文档 filtered_docs = db.similarity_search( query="", filter={"metadata": {"file_name": target_file}} )
部分版本中若空查询不生效,可改用search方法配合通配符查询:
filtered_docs = db.search( query="*", search_type="hybrid", filter={"metadata": {"file_name": target_file}} )
内容的提问来源于stack exchange,提问作者alpa
相关产品推荐
相关产品推荐

