feat: 第三优先级完善 — CI/CD、PyPI、pre-commit、CHANGELOG、贡献指南、基准测试、ADR
CI / Test (Python 3.13) (push) Has been cancelled

This commit is contained in:
2026-07-11 20:13:36 +08:00
parent 7e0b9553c8
commit 2ddb6de92f
13 changed files with 483 additions and 12 deletions
+41
View File
@@ -0,0 +1,41 @@
"""基准测试共享 fixture."""
import pytest
from src.core.config import ChunkConfig, EmbedConfig
from src.core.db import VectorDB
from src.core.embedder import create_embedder
from src.core.ingest import DocumentIngestor
from src.core.search import Searcher
@pytest.fixture(scope="module")
def benchmark_db(tmp_path_factory):
"""模块级共享 ChromaDB 实例."""
persist_dir = tmp_path_factory.mktemp("bench_data")
return VectorDB(persist_dir=str(persist_dir))
@pytest.fixture(scope="module")
def benchmark_embedder():
"""模块级共享 LocalEmbedder."""
config = EmbedConfig(mode="local", local_model="BAAI/bge-small-zh-v1.5")
return create_embedder(config)
@pytest.fixture(scope="module")
def benchmark_searcher(benchmark_db, benchmark_embedder):
"""预填充数据的 Searcher."""
ingestor = DocumentIngestor(
benchmark_db, benchmark_embedder, "bench_collection",
chunk_config=ChunkConfig(max_size=1000, overlap=100),
)
for i in range(100):
content = (
f"# 文档{i}\n\n"
+ "\n\n".join(
f"{j}段用于基准测试。关键词: Python, Rust, GPU, 向量数据库。"
for j in range(5)
)
)
ingestor.ingest_content(content, f"bench_{i}.md")
return Searcher(benchmark_db, benchmark_embedder, "bench_collection")
+23
View File
@@ -0,0 +1,23 @@
"""嵌入性能基准测试."""
import pytest
def test_bench_embed_single(benchmark, benchmark_embedder):
"""单文本嵌入耗时."""
text = "这是一段测试文本,用于测量嵌入速度。"
benchmark(benchmark_embedder.embed, [text])
def test_bench_embed_batch_32(benchmark, benchmark_embedder):
"""批量 32 文本嵌入耗时."""
texts = [f"测试文本第{i}条,模拟真实文档内容。" for i in range(32)]
benchmark(benchmark_embedder.embed, texts)
def test_bench_embed_batch_100(benchmark, benchmark_embedder):
"""批量 100 文本嵌入耗时(GPU 优势显著)."""
texts = [
f"测试文本第{i}条。Python 通用编程语言,用于数据科学和 AI。"
for i in range(100)
]
benchmark(benchmark_embedder.embed, texts)
+17
View File
@@ -0,0 +1,17 @@
"""检索性能基准测试."""
import pytest
def test_bench_search_top5(benchmark, benchmark_searcher):
"""top_k=5 检索耗时."""
benchmark(benchmark_searcher.search, "Python 向量数据库", top_k=5)
def test_bench_search_top20(benchmark, benchmark_searcher):
"""top_k=20 检索耗时."""
benchmark(benchmark_searcher.search, "Rust 编程语言 GPU", top_k=20)
def test_bench_search_cold_start(benchmark, benchmark_searcher):
"""冷启动检索耗时."""
benchmark(benchmark_searcher.search, "GPU 加速 深度学习 嵌入", top_k=10)