当前位置: 首页 > news >正文

ChromaDB06-数据集导入补充

ChromaDB06-数据集导入补充

针对【高考选择题数据集】在向量数据库导入的资料补充


1-数据集导入

快速开始

1. 安装依赖

pipinstall-rrequirements.txt

或直接安装:

pipinstallchromadb

2. 运行导入脚本

python3 import_to_chromadb.py

脚本说明

功能特性

  • 自动读取所有科目:8个科目的数据文件(数学、物理、化学、生物、语文、英语、地理)
  • 智能文本整合:将问题、选项、文章、答案整合成用于向量检索的文本
  • 元数据丰富:包含科目、答案、来源等信息
  • 持久化存储:数据保存在./chromadb_storage目录

数据结构

每道题目的数据包含:

字段说明示例
id唯一标识“mathqa_0”
document用于检索的完整文本包含问题、选项、答案等
metadata元数据字典subject, label, source等

Metadata字段

{"subject":"mathqa",# 科目"index":0,# 在该科目中的索引"label":"D",# 正确答案"source":"2021年浙江卷—数学",# 来源"question_id":"xxx"# 原始ID(如果有)}

查询使用示例

基本查询

importchromadb# 连接数据库client=chromadb.PersistentClient(path="./chromadb_storage")collection=client.get_collection("gaokao_questions")# 查询相关题目results=collection.query(query_texts=["集合的交集和并集"],n_results=5)# 查看结果fori,docinenumerate(results['documents'][0]):print(f"结果{i+1}:")print(doc)print(f"科目:{results['metadatas'][0][i]['subject']}")print(f"距离:{results['distances'][0][i]}")print()

按科目过滤

# 只查询数学题目results=collection.query(query_texts=["函数"],n_results=3,where={"subject":"mathqa"})

获取特定题目

# 根据ID获取results=collection.get(ids=["mathqa_0","physics_5"])

文件结构

gaokao-benchmark/ ├── import_to_chromadb.py # 导入脚本 ├── chromadb_storage/ # 数据库存储目录(自动创建) │ └── chroma.sqlite3 # SQLite数据库文件 ├── gaokao-mathqa.jsonl # 原始数据文件 ├── gaokao-physics.jsonl ├── ...(其他科目数据文件) └── USAGE.md # 本文档

常见问题

Q: 如何重新导入数据?

A: 直接重新运行脚本即可,脚本会自动删除旧的collection并重新导入。

Q: 如何修改collection名称?

A: 修改脚本中的collection_name参数:

import_to_chromadb(data_dir="./",collection_name="your_custom_name")

Q: 如何使用中文嵌入模型?

A: 需要自定义embedding function。可以参考以下代码:

fromsentence_transformersimportSentenceTransformerfromchromadb.utilsimportembedding_functions# 使用中文模型embedding_model=SentenceTransformer('m3e-base')embedding_function=embedding_functions.SentenceTransformerEmbeddingFunction(model_name="m3e-base",device="cpu")# 创建collection时指定collection=client.get_or_create_collection(name="gaokao_questions",embedding_function=embedding_function)

Q: 数据存储在哪里?

A: 数据存储在./chromadb_storage目录,使用SQLite持久化。可以备份整个目录来保存数据。

Q: 如何删除数据库?

A: 删除chromadb_storage目录即可:

rm-rfchromadb_storage

性能说明

  • 总题量:约数千道题目
  • 导入时间:取决于机器性能,通常1-3分钟
  • 存储空间:约几十MB(取决于嵌入模型)
  • 查询速度:毫秒级

2-数据集介绍

将高考题库数据集导入到ChromaDB向量数据库,实现智能检索功能。

📁 文件说明

文件说明
import_to_chromadb.py数据导入脚本
query_examples.py查询示例脚本
requirements.txtPython依赖
USAGE.md详细使用文档

🚀 快速开始

1. 安装依赖

pipinstall-rrequirements.txt

2. 导入数据

python3 import_to_chromadb.py

说明:

  • 自动读取8个科目的数据文件
  • 所有题目存储在一个collection中
  • 数据持久化在./chromadb_storage目录
  • 导入完成后会显示示例查询结果

3. 查询数据

方式一:运行查询示例脚本
python3 query_examples.py

提供多种查询示例:

  • 基本文本搜索
  • 按科目过滤
  • 根据ID获取
  • 交互式搜索
  • 统计信息
方式二:使用Python代码
importchromadb# 连接数据库client=chromadb.PersistentClient(path="./chromadb_storage")collection=client.get_collection("gaokao_questions")# 查询results=collection.query(query_texts=["集合的交集"],n_results=5)# 查看结果fordoc,metadatainzip(results['documents'][0],results['metadatas'][0]):print(f"科目:{metadata['subject']}")print(f"内容:{doc}\n")

📊 数据结构

{"id":"mathqa_0","document":"问题:...\n选项:...\n答案:...","metadata":{"subject":"mathqa",# 科目"label":"D",# 答案"source":"2021年浙江卷"# 来源}}

📚 包含的科目

  • mathqa: 数学选择题
  • mathcloze: 数学填空题
  • physics: 物理
  • chemistry: 化学
  • biology: 生物
  • chinese: 语文
  • english: 英语
  • geography: 地理

🔍 查询示例

基本查询

results=collection.query(query_texts=["函数"],n_results=5)

按科目过滤

results=collection.query(query_texts=["力学"],n_results=3,where={"subject":"physics"})

获取特定题目

results=collection.get(ids=["mathqa_0","physics_5"])

💡 高级功能

使用中文嵌入模型(可选)

如果需要更好的中文检索效果,可以安装中文模型:

pipinstallsentence-transformers

然后修改代码使用m3e-base等中文模型。详见USAGE.md

📖 详细文档

查看 USAGE.md 获取:

  • 完整API说明
  • 高级查询示例
  • 常见问题解答
  • 性能优化建议

🗑️ 清理数据

删除数据库重新导入:

rm-rfchromadb_storage python3 import_to_chromadb.py

❓ 常见问题

Q: 导入需要多长时间?
A: 约1-3分钟,取决于机器性能。

Q: 数据库占用多少空间?
A: 约几十MB,取决于嵌入模型。

Q: 如何重新导入?
A: 直接重新运行导入脚本即可,会自动覆盖旧数据。

Q: 支持哪些查询方式?
A: 语义搜索、科目过滤、ID查询等。


http://www.jsqmd.com/news/422196/

相关文章:

  • ChromaDB05-数据集导入
  • ISO 9001 ISO 14001 ISO 45001
  • path综合案例--时钟案例
  • 从WPF到Avalonia:铁路信号集中监测系统的信创跨平台重构思考 - T
  • DLL 文件丢失、DirectX 组件损坏引修复
  • 基于Spring Boot的高校办公室行政事务管理系统
  • A1平台多路aes67出现scheduling while atomic问题
  • 我的老师在AI时代之前就被淘汰了!一个“学渣”的自白:我的老师是小说和谷歌
  • [兰溪民间故事]赵阁老作弄亲家:一句玩笑话,十万雪花银
  • MySQL数据库
  • 基于springboot高校学生辅助系统
  • 东方博宜OJ 1153:查找“支撑数” ← 数组
  • 如何利用iPad作为Mac的高效副屏:功能解析与实际体验
  • ifstream和ofstream分别是什么
  • JS对象-事件监听
  • CSV文件具有简单易用、广泛兼容、人类可读和高压缩性的优点
  • 0xgame2025
  • 基于springboot高校创新创业系统
  • 面向对象三大特征之一:封装
  • 论文排版利器:8款目录生成软件深度测评
  • windows注册表编辑工具ExecTI - Run as TrustedInstaller
  • AI网关
  • 高效论文写作必备:8款目录生成工具横向评测
  • path路径模块
  • Agentic AI提示工程自我学习能力的教育应用,提示工程架构师介绍
  • 大数据领域数据建模的物联网数据处理
  • 一键生成目录:8款智能工具全面对比,排版更省心
  • AI应用架构师视角:私有化大模型部署的技术难点
  • 【UI自动化测试】6_Appium基础API _App基础操作
  • 大数据领域数据工程的关键流程详解