knowledge-base-docs
收藏数据集概述
基本信息
- 数据集ID:
saidsef/knowledge-base-docs - 最后更新: 2025年12月
- 版本: 1.0
- 嵌入模型:
all-MiniLM-L6-v2 - 来源总数: 25+
数据集内容
- 描述: 一个全面、经过预处理和向量化的数据集,包含来自25个以上流行开源项目和云平台的文档,专为检索增强生成(RAG)应用优化。
- 领域: 云原生、DevOps、机器学习、基础设施。
数据来源
数据集包含以下项目的文档:
| 来源 | 领域 | 文件类型 |
|---|---|---|
| kubernetes | 容器编排 | Markdown |
| terraform | 基础设施即代码 | MDX |
| kustomize | Kubernetes配置 | Markdown |
| ingress-nginx | Kubernetes Ingress | Markdown |
| helm | 包管理 | Markdown |
| external-secrets | 密钥管理 | Markdown |
| prometheus | 监控 | Markdown |
| argo-cd | GitOps | Markdown |
| istio | 服务网格 | Markdown |
| scikit-learn | 机器学习 | RST |
| cilium | 网络与安全 | RST |
| redis | 内存数据库 | Markdown |
| grafana | 可观测性 | Markdown |
| docker | 容器化 | Markdown |
| linux | 操作系统 | RST |
| ckad-exercises | Kubernetes认证 | Markdown |
| aws-eks-best-practices | AWS EKS | Markdown |
| gcp-professional-services | Google Cloud | Markdown |
| external-dns | DNS管理 | Markdown |
| google-kubernetes-engine | GKE | Markdown |
| consul | 服务网格 | Markdown |
| vault | 密钥管理 | MDX |
| tekton | CI/CD | Markdown |
| model-context-protocol-mcp | AI上下文协议 | Markdown |
数据集结构
特征
content(string): 分块的文本内容(500个单词,重叠50个单词)。original_id(int/float): 原始文档ID的引用。embeddings(list[float]): 来自all-MiniLM-L6-v2的384维嵌入向量。score(float64): 分数。
数据划分
- 训练集:
- 样本数量: 26973
- 字节数: 158070695
- 下载大小: 94564806
- 数据集大小: 158070695
配置
- 配置名称: default
- 数据文件:
- 划分: train
- 路径: data/train-*
创建过程
- 数据收集: 浅克隆25个以上GitHub仓库,提取文档文件(
.md、.mdx、.rst)。 - 内容处理: 移除YAML frontmatter,转换为LLM友好的markdown格式,剥离脚本、样式和媒体元素,保留格式正确的代码块。
- 文本分块: 块大小为500个单词,重叠50个单词,确保跨块的语义连续性。
- 向量化: 使用模型
all-MiniLM-L6-v2,嵌入维度为384,启用余弦相似度归一化,预计算嵌入以实现快速检索。 - 存储格式: Apache Parquet格式,针对查询性能进行压缩优化,文件为
knowledge_base.parquet。
使用示例
加载数据集
python import pandas as pd from datasets import load_dataset
从Hugging Face Hub加载
dataset = load_dataset("saidsef/knowledge-base-docs") df = dataset[train].to_pandas()
从本地Parquet文件加载
df = pd.read_parquet("knowledge_base.parquet", engine="pyarrow")
语义搜索/RAG实现
python import numpy as np from sentence_transformers import SentenceTransformer
model = SentenceTransformer(all-MiniLM-L6-v2, trust_remote_code=True)
def retrieve(query, df, k=5): query_vec = model.encode(query, normalize_embeddings=True) embeddings_matrix = np.vstack(df[embeddings].values) norms = np.linalg.norm(embeddings_matrix, axis=1) * np.linalg.norm(query_vec) scores = np.dot(embeddings_matrix, query_vec) / norms df[score] = scores return df.sort_values(by=score, ascending=False).head(k)
results = retrieve("How do I configure an nginx ingress controller?", df, k=3) print(results[[content, score]])
构建RAG管道
python from transformers import pipeline
qa_pipeline = pipeline("question-answering", model="distilbert-base-cased-distilled-squad")
def rag_answer(question, df, k=3): context_rows = retrieve(question, df, k=k) context_text = " ".join(context_rows[content].tolist()) result = qa_pipeline(question=question, context=context_text) return result[answer], context_rows
answer, sources = rag_answer("What is a Kubernetes pod?", df) print(f"Answer: {answer}")
数据集统计
python
总块数
print(f"Total chunks: {len(df)}")
平均块长度
df[chunk_length] = df[content].apply(lambda x: len(x.split())) print(f"Average chunk length: {df[chunk_length].mean():.0f} words")
嵌入维度
print(f"Embedding dimensions: {len(df[embeddings].iloc[0])}")
主要用途
- RAG应用: 构建检索增强生成系统。
- 语义搜索: 跨多个项目查找相关文档。
- 问答系统: 创建技术支持聊天机器人。
- 文档助手: 帮助开发者浏览复杂文档。
- 学习资源: 基于高质量技术内容训练模型。
- 比较分析: 比较跨项目的文档方法。
性能考虑
- 预计算嵌入: 无需运行时编码。
- 优化检索: 矩阵乘法实现快速余弦相似度计算。
- Parquet格式: 高效的存储和查询性能。
- 块重叠: 更好地保留跨边界上下文。
依赖要求
txt pandas>=2.0.0 numpy>=1.24.0 sentence-transformers>=2.0.0 pyarrow>=12.0.0 datasets>=2.0.0
许可证
- 本数据集是来自各种开源项目文档的汇编。
- 每个来源保留其原始许可证(大多数项目使用Apache 2.0或MIT许可证)。
- 请参考各个项目仓库以了解具体的许可条款。




