Vocab Bloom Hub

一部可以与你的应用并肩运行的词典

Vocab Bloom Hub 是一部自托管的英语词典——30 万个条目,包含释义、例句、词形变化,以及俄语、西班牙语、法语、德语、葡萄牙语、中文和阿拉伯语的翻译——通过公共只读 API 提供,并配有 SDK、管理界面和已发布的数据集。一条命令即可安装,代码采用 MIT 许可证,数据采用 CC BY 4.0 许可证。

一条命令完成安装

有 compose 文件和环境变量模板就够了:镜像从 GitHub Container Registry 拉取,Postgres 随之启动,词典在首次启动时自动加载。

mkdir vocab-bloom-hub && cd vocab-bloom-hub
curl -fsSLO https://raw.githubusercontent.com/Fristail27/vocab-bloom-hub/main/docker-compose.yml
curl -fsSL  https://raw.githubusercontent.com/Fristail27/vocab-bloom-hub/main/.env.example -o .env
# edit .env: ADMIN_PASSWORD, POSTGRES_PASSWORD
docker compose up -d
curl -s localhost:3010/api/ready   # {"status":"ok"} once the dictionary is in

你将获得

公共 API

带版本、只读、无需登录:容错拼写的搜索,带释义、词形变化、翻译、同义词和反义词的词条,批量查询,游标分页的列表,随机词条——每个响应都采用同一封装格式,并通过 ETag 缓存。

SDK

由同一份 OpenAPI 文档生成的 Node.js / TypeScript 和 Python 类型化客户端:每个端点一个方法,游标迭代,类型化的错误,ETag 缓存,可选的重试,以及供 notebook 使用的 DataFrame。

管理界面

在浏览器中编辑单词、释义、翻译、同义词和反义词,查看统计数据,以数据集的形式导入和导出整部词典。

数据集

词典以 CC BY 4.0 许可证发布在 HuggingFace 上,并会自动加载到空实例中;导出功能可以在各环境之间迁移词典,离线环境也不例外。

为运维而生

健康与就绪探针、优雅停机、启动时自动迁移、Prometheus 指标、带请求 ID 的结构化 JSON 日志——一个服务要交给他人运行所需要的一切。

搜索

基于 Postgres 索引的精确、前缀、模糊和翻译四级搜索:在完整词典上,热点读取也能在毫秒内响应。

两个 SDK,同一份契约

两个客户端都由公共 API 已提交的 OpenAPI 文档生成,因此永远不会与服务器脱节。

Node.js / TypeScript

import { VocabBloomClient } from '@vocab-bloom-hub/client';

const client = new VocabBloomClient({ baseUrl: 'https://your-instance.example/api' });

const { data } = await client.search({ search: 'runing', limit: 5 }); // typo tolerant
const run = await client.word('run'); // every part of speech, forms, meanings, translations

for await (const word of client.iterateWords({ part_of_speech: ['verb'], word_level: ['b1'] })) {
  console.log(word.word);
}

Python

from vocab_bloom_hub import VocabBloomClient

client = VocabBloomClient("https://your-instance.example/api")

hits = client.search("runing", limit=5)          # typo tolerant
run = client.word("run")                          # forms, meanings, translations

for word in client.iter_words(part_of_speech=["verb"], word_level=["b1"]):
    print(word.word)

df = client.words_dataframe(part_of_speech=["noun"])   # pip install "vocab-bloom-hub[pandas]"

数据与许可证

代码采用 MIT 许可证。词典数据——由 API 提供、以数据集形式导出、发布在 HuggingFace 上——采用 CC BY 4.0 许可证:可自由使用和改编,包括商业用途,但需署名。数据大部分由 LLM 生成,未经人工校验;在依赖这些数据之前,请先了解这意味着什么。