Model or dataset
bilibili/Index-1.9B avatar
bilibili/Index-1.9B

Index-1.9B: a 1.9B Chinese-first model with a 32K sibling and a role-play variant

A lightweight multilingual LLM

1,032 stars53 forksPythonApache-2.0

At a glance

What is it?
bilibili's Index-1.9B is a small multilingual LLM family shipped as four checkpoints plus a long-context version. Its self-reported benchmark table puts it near Qwen1.5-1.8B on average, and the 32K model can only be started through one specific demo script.
Who is it for?
Adopt Index-1.9B if you need a small Chinese-and-English checkpoint you can run on a single consumer GPU or on CPU through the Transformers pipeline shown in the README, and if you specifically want the 32K variant for long documents or the Character variant for few-shot role-play.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 25 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The gap Index-1.9B is aimed at: Chinese-heavy small models

Most sub-2B open checkpoints are trained overwhelmingly on English. The README states the Index-1.9B base was pre-trained on 2.8T tokens of mainly Chinese and English corpus, and that the chat model was aligned with SFT and DPO on top of that base. The team attributes the chat model's behaviour to a specific data choice: because a lot of internet community corpus went into pre-training, they report more interesting chat behaviour and strong multilingual ability, especially for East Asian languages and translation. That is the audience. If your product speaks Chinese to users, or translates between Chinese, Japanese or Korean and English, a 1.9B model that fits in modest memory is a different proposition from a 7B English-first model. The README also lists Index-1.9B-Character, which adds RAG on top of SFT and DPO to support few-shot role-playing customization, and points to a hosted role-play Space for anyone who wants to see the behaviour before downloading weights.

Five checkpoints, and the one that exists to prove a point

The family is not one model. Index-1.9B base has 1.9 billion non-embedding parameters. Index-1.9B-Pure is the control: same parameter count and same training strategy, but the corpus was strictly filtered to remove all instruction-related data, described in the README as a way to verify the impact of instructions on benchmarks. Index-1.9B-Chat is the SFT and DPO aligned dialogue model. Index-1.9B-Character is the role-play variant built with RAG. Index-1.9B-32K is the long-context model, and the README claims it can read documents of over 35,000 words in one pass. The Pure checkpoint is the most interesting artifact here for anyone doing evaluation work, because it isolates a variable that most model releases leave entangled. The README's own numbers show the size of that effect: Pure scores 50.61 average against 64.92 for the instruction-bearing base, and 46.53 versus 57.01 on CEVAL. That is a 14-point average swing from instruction data alone, on the same architecture and training recipe.

What the benchmark table actually says, including where it loses

The README publishes a comparison table and states the evaluation code is based on OpenCompass with compatibility modifications, with details in the evaluate/ folder. Read the table honestly. Index-1.9B posts 64.92 average and 69.93 average English. Qwen1.5-1.8B is at 58.96 and 59.28, so Index wins there. Qwen2-1.5B, marked as a report figure rather than a local run, is listed at 65.17 average and 62.52 English, so it edges Index on the overall average while losing on the English sub-average. Phi-2 at 2.7B is listed at 58.89 average but 72.54 English, the best English figure in the table. On individual columns, Index-1.9B's HellaSwag of 80.69 stands out against Qwen1.5-1.8B's 58.33 and Gemma 2B's 66.82. But its MMLU of 52.53 sits below Qwen2-1.5B's 56.5, and its CEVAL of 57.01 sits below Qwen1.5-1.8B's 59.48 and Qwen2-1.5B's 70.6. The README's claim that the model leads in multiple benchmarks compared to models of the same level is defensible on the average, less so on the Chinese-knowledge columns, which is worth noticing for a model whose selling point is Chinese.

Loading it: the pipeline call and the path rule that will bite you

Setup is two commands: git clone https://github.com/bilibili/Index-1.9B, then cd Index-1.9B and pip install -r requirements.txt. The README's Transformers example uses AutoTokenizer and pipeline("text-generation") with trust_remote_code=True, which means you are executing code shipped with the weights, not just loading tensors. The device argument defaults to "cpu" and the comment notes it can be "cuda" or "mps" for Apple silicon. Generation parameters in the example are max_new_tokens=300, top_k=5, top_p=0.8, temperature=0.3, repetition_penalty=1.1 and do_sample=True. The input is a list of role and content dictionaries, with a Chinese system message identifying the model as Index. One warning sits above the code and deserves attention: the directory must not contain "." and can be replaced with "_". The default model_path in the example is ./IndexTeam/Index-1.9B-Chat/, which contains a dot, so the example and the warning are in tension. Treat the warning as authoritative and rename the folder before you file a bug.

Demos, the API shim, and the 32K launch restriction

Three demo entry points are documented. The web demo needs pip install gradio==4.29.0 and runs as python demo/web_demo.py --port='port' --model_path='/path/to/model/'. The terminal demo runs as python demo/cli_demo.py --model_path='/path/to/model/'. The OpenAI-compatible shim needs pip install flask==2.2.5 and runs as python demo/openai_demo.py --model_path='/pa...' (the README text is truncated at that point, so the remaining arguments are not visible in the supplied material). The 32K model carries a restriction stated twice in the README, both times in bold with three exclamation points: it can only be launched using demo/cli_long_text_demo.py. There is a dedicated technical report file in the repository, Index-1.9B-32K_Long_Context_Technical_Report.md, and the README points to it for details. If you plan to wrap the 32K model in your own serving code, that restriction is the first thing to investigate, because the README does not explain what the script does differently.

Where it fits badly, and what to use instead

The obvious failure mode is English reasoning. Phi-2 at 2.7B scores 72.54 on the README's English average against Index-1.9B's 69.93, and Mistral-7B is listed at 69.23 English with an MMLU of 60.1 against Index's 52.53. If your task is English instruction following or knowledge-heavy question answering, a larger English-first model is the better tool, and the README's own table is the evidence. The second limitation is deployment surface. There are no releases retrieved for this repository, so version pinning is on you; only gradio and flask have pinned versions in the README, and requirements.txt contents are not shown. The third is the 32K path: a model that the README says can only be started through one script is a model you cannot casually drop into vLLM or TGI without doing work the README does not describe. For an alternative in the same weight class, Qwen1.5-1.8B is the closest comparison the README itself draws, and it is a fair one: Qwen1.5-1.8B scores higher on CEVAL (59.48 versus 57.01) and CMMLU (57.12 versus 52.79) while losing on HellaSwag and the overall average. The difference in approach is data and alignment emphasis rather than architecture. Index leans on community web corpus and a DPO stage; Qwen1.5 is a general-purpose small model with a wider published serving ecosystem. If you need GGUF or Ollama, the README notes Index-1.9B-Chat was adapted to llamacpp and Ollama with weights at Index-1.9B-Chat-GGUF, which narrows the gap.

Licence, maintenance and the research checkpoint

The repository is Apache-2.0, which permits commercial use and modification subject to the licence terms, but this is not legal advice and you should read the licence text and the model card on Hugging Face before shipping. Note that the README links weights hosted under IndexTeam on Hugging Face and ModelScope; the licence that governs the weights is stated on those model pages, and the repository licence and the model licence are not automatically the same thing. On maintenance, the repository is not archived and the last push recorded is 2026-08-21. The README's recent updates list three items: the 32K long-context release, the llamacpp and Ollama adaptation, and the open-sourcing of Index-1.9B-Constant-LR, a checkpoint from before the learning-rate decay stage, released for research. That last one matters for a specific kind of user. If you want to study decay or continue pre-training from a mid-run state, Constant-LR is the checkpoint to start from, and it is a more unusual release than another chat model. If you only want a chat endpoint, ignore it.

Editorial conclusion

Adopt Index-1.9B if you need a small Chinese-and-English checkpoint you can run on a single consumer GPU or on CPU through the Transformers pipeline shown in the README, and if you specifically want the 32K variant for long documents or the Character variant for few-shot role-play. Do not adopt it if your workload is English-only reasoning: the README's own table shows Phi-2 at 72.54 average English against Index-1.9B's 69.93, and the base model's MMLU of 52.53 trails Qwen2-1.5B's reported 56.5. Before committing, verify three things yourself: that your model directory path contains no dot, since the README warns it must be replaced with an underscore; that you launch Index-1.9B-32K exclusively through demo/cli_long_text_demo.py, which the README marks with three exclamation points; and that pip install -r requirements.txt resolves on your platform, because the README does not pin those versions the way it pins gradio==4.29.0 and flask==2.2.5.

Official sources

  1. bilibili/Index-1.9B on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
Community notes

Community notes