2026-07-28 10:30:18 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-28 10:30:18 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 10:28:31 +08:00
2026-07-24 16:21:11 +08:00

HTKnow

HTKnow 知识库管理系统,提供文档上传、检索与知识图谱能力,内置前端界面与 OpenAPI 文档。

功能概览

  • 知识库管理、文件上传与解析
  • 全文/向量/图谱增强搜索
  • 知识图谱查询与可视化
  • 内置前端界面与 Swagger API 文档

快速开始

本地运行

  1. 准备外部服务MinerU、Embedding、图片 Embedding、Rerank见“配置”
  2. 启动服务:
cargo run
# 或
cargo build --release
./target/release/htknow

Docker Compose

docker compose up -d

docker-compose.yml 默认将 8080 -> 3000

构建 Docker 镜像

./build-docker.sh

脚本会先编译二进制,再构建镜像并给出运行示例。

访问入口

  • 前端界面: http://localhost:3000/
  • API 文档: http://localhost:3000/docs
  • OpenAPI JSON: http://localhost:3000/api-docs/openapi.json

使用 docker-compose 时,请将端口替换为 8080

API 认证

/api/v1/knowledge/* 需要请求头:

  • x-user-id(必填)
  • x-role(必填)
  • x-user-name(可选)

示例:

curl -H 'x-user-id: 1' -H 'x-role: admin' -H 'x-user-name: testuser' \
  http://localhost:3000/api/v1/knowledge/knowledge_base/

启动 mineru

docker run -d --name mineru-api --restart unless-stopped --ipc host -p 10001:10001 -e MINERU_MODEL_SOURCE=local --ulimit memlock=-1 --ulimit stack=67108864 --gpus all alexsuntop/mineru:latest mineru-api --host 0.0.0.0 --port 10001

配置

支持通过环境变量覆盖配置,未设置时使用默认值。

服务器

环境变量 默认值 说明
HTKNOW_SERVER_HOST 0.0.0.0 监听地址
HTKNOW_SERVER_PORT 3000 监听端口
HTKNOW_SERVER_UPLOAD_LIMIT_MB 500 上传大小限制MB
HTKNOW_SERVER_PROCESS_INTERVAL_SECS 10 文件处理间隔(秒)
HTKNOW_SERVER_PROCESS_CONCURRENCY 1 后台文件处理并发数
HTKNOW_PARSE_ENABLED true 是否启动后台文件解析false 时仅即时解析生效)
HTKNOW_REUSE_DUPLICATE_FILES true 是否复用重复文件的已解析结果
HTKNOW_BUILD_KNOWLEDGE_GRAPH false 文件解析完成后是否构建知识图谱(依赖 LLM 配置)
HTKNOW_LANCEDB_COMPACT_CRON 0 0 3 * * * LanceDB 自动压缩 cron 表达式本地时区off/disabled/0 禁用)

外部服务

默认值为示例地址,请按实际部署环境调整。

环境变量 默认值 说明
HTKNOW_MINERU_URL http://192.168.0.46:10001/file_parse MinerU PDF 解析
HTKNOW_REQUEST_TIMEOUT_SECS 600 外部接口请求超时(秒),适用于文件解析相关接口
HTKNOW_MINERU_MAX_PAGES 50 MinerU 单次解析 PDF 最大页数0 表示不限制)
HTKNOW_OFFICE_CONVERT_URL http://192.168.0.46:8003/convert Office 文档转 PDF 服务,使用 multipart file 字段并自动追加 target_format=pdf
HTKNOW_CUSTOM_PARSE_URL 自定义解析服务地址(配置后仅 Word/PPT/PDF 解析走该服务,需返回已切片数据)
HTKNOW_CUSTOM_PARSE_REUSE_URL 自定义解析复用服务地址(仅输入 pdf_contents不包含图片
HTKNOW_AUDIO_TRANSCRIPTION_URL http://192.168.0.46:59805/api/v1/audio/transcriptions 音频转写服务
HTKNOW_AUDIO_TRANSCRIPTION_KEY 音频转写服务 API Key
HTKNOW_EMBEDDING_URL http://222.190.139.186:59700/v1/embeddings 文本向量服务
HTKNOW_IMAGE_EMBEDDING_URL http://192.168.0.46:59802/v1/embeddings/file 图片向量服务
HTKNOW_RERANK_URL http://222.190.139.186:59600/v1/rerank Rerank 服务
HTKNOW_CUSTOM_IMAGE_URL http://192.168.0.46:59085/split_result 自定义图片文本化 解析
HTKNOW_CUSTOM_IMAGE_URL http://192.168.0.46:59085/split_result 自定义图片文本化 解析
HTKNOW_WEKNORA_URL http://172.19.152.51:8081 weknora 后端服务
HTKNOW_WEKNORA_API_KEY sk-6U04CeFoY7JSEBKBp7fQSGYoW3kv7e5qdB14aFnEPt weknora api接入服务
HTKNOW_WEKNORA_KB_MAP {"*":"881ee2e9-633a-426e-b26a-b9175eec9a64"} weknora 知识库id和htknow映射接入服务

AI 模型

环境变量 默认值 说明
HTKNOW_EMBEDDING_MODEL bge-m3 Embedding 模型
HTKNOW_EMBEDDING_DIM 1024 Embedding 维度
HTKNOW_IMAGE_EMBEDDING_DIM 2048 图片 Embedding 维度
HTKNOW_EMBEDDING_BATCH_SIZE 8 Embedding 批量请求批次大小
HTKNOW_RERANK_MODEL bge-rerank Rerank 模型
HTKNOW_RERANK_THRESHOLD 0.1 Rerank 阈值

数据库

环境变量 默认值 说明
DATABASE_URL sqlite://data/app.sqlite 数据库连接
HTKNOW_DB_MAX_CONNECTIONS 16 最大连接数
HTKNOW_DB_MIN_CONNECTIONS 2 最小空闲连接数
HTKNOW_DB_BUSY_TIMEOUT_MS 5000 busy_timeout毫秒
HTKNOW_DB_INIT_DEFAULT_KBS true 是否初始化默认知识库

存储路径

环境变量 默认值 说明
HTKNOW_DATA_DIR data 数据目录
HTKNOW_LANCEDB_PATH data/lancedb_data LanceDB 路径
HTKNOW_TEMP_PATH data/temp 临时目录
HTKNOW_IMAGES_PATH data/images 图片目录
HTKNOW_PDF_PATH data/pdfs PDF 目录
HTKNOW_FILES_PATH data/files 文件目录
HTKNOW_ARCHIVES_PATH data/archives 压缩文件解压目录
HTKNOW_CONTENTS_PATH data/contents 文件解析后完整文本目录

搜索

环境变量 默认值 说明
HTKNOW_SEARCH_LIMIT 10 搜索结果限制
HTKNOW_TANTIVY_INDEX_PATH data/tantivy_index Tantivy 索引路径
HTKNOW_TANTIVY_FULL_INDEX_PATH data/tantivy_full_index Tantivy 全文索引
HTKNOW_TANTIVY_MEMORY_MB 50 Tantivy 内存MB
HTKNOW_SEARCH_TANTIVY_REBUILD_BATCH_SIZE 100 Tantivy 索引重建批次大小
HTKNOW_SEARCH_LANCEDB_REBUILD_BATCH_SIZE 100 LanceDB 从 SQLite 重建批次大小
HTKNOW_SEARCH_EMBEDDING_TIMEOUT_SECS 30 embedding / 图片 embedding 请求超时(秒)
HTKNOW_SEARCH_RERANK_TIMEOUT_SECS 20 rerank 请求超时(秒)
HTKNOW_SEARCH_SYNONYM_ENABLED true 是否启用同义词查询扩展
HTKNOW_SEARCH_SYNONYM_BOOST 0.7 同义词权重因子(与行权重相乘)
HTKNOW_SEARCH_MAX_SYNONYMS_PER_TERM 5 每个词最多扩展同义词数
HTKNOW_SEARCH_MAX_TOTAL_SYNONYMS 30 单次查询最多扩展同义词总数
HTKNOW_HIGHLIGHT_PAGE_MIN_POSITIONS 20 高亮页码选择阈值:首选页位置数少于该值时优先使用第二页

切片

环境变量 默认值 说明
HTKNOW_SMART_SLICE_MAX_CHARS 8000 智能切片最大字数
HTKNOW_FIXED_SLICE_OVERLAP_CHARS 100 固定切片重叠字数

LLM可选

环境变量 默认值 说明
LLM_API_URL LLM API 地址
LLM_API_KEY LLM API Key
LLM_MODEL gpt-3.5-turbo LLM 模型

启用 etcd 配置

cargo build --features etcd

日志级别RUST_LOG

默认日志级别为 info,可通过环境变量覆盖:

RUST_LOG=debug ./htknow
RUST_LOG=warn,htknow::search=debug ./htknow

问题处理

  1. 全文索引 tantivy 异常 可能是异常停止导致的,报错 thread 'main' (1) panicked at src/search/mod.rs:903:29:failed to create tantivy index reader: Failed to open file for read: 'FileDoestiotExist("/app/data/tantivy index/eafseaef4f2340... run with 'RuST_BAcKTRAcE=l environment variable to display a backtrace

方案一:在 meta.json 中去掉报错的索引,注意 meta.json 中记录的名称有 -

方案二

先去掉原本的索引使应用正常启动

mv tantivy_index tantivy_index_bak0423
mv tantivy_full_index tantivy_full_index_bak0423
docker start htknow

然后在词典可以重建全文检索的索引

Description
No description provided
Readme 1.8 MiB
Languages
Rust 75.5%
Vue 18.9%
Shell 2.6%
JavaScript 1.8%
HTML 1%
Other 0.2%