
RAG-Anything 怎么在离线环境运行预置 tiktoken 缓存并配置 TIKTOKEN_CACHE_DIR【免费下载链接】RAG-AnythingRAG-Anything: All-in-One RAG Framework项目地址: https://gitcode.com/GitHub_Trending/ra/RAG-Anything如果你要在一台无法联网、或网络受限的机器上运行 RAG-Anything启动时大概率会卡在初始化阶段。原因是 RAG-Anything 的核心引擎依赖LightRAG而LightRAG内部用 OpenAI 的tiktoken做文本分词tiktoken在首次使用时会尝试从 OpenAI 的公共服务器openaipublic.blob.core.windows.net下载 tokenizer 模型。离线环境下这次下载必然失败导致LightRAG实例初始化失败报错形如文档给出的示例来自 docs/offline_setup.mdFailed to initialize LightRAG instance: HTTPSConnectionPool(hostopenaipublic.blob.core.windows.net, port443): Max retries exceeded with url: /encodings/o200k_ba注意这个依赖是间接的RAG-Anything 代码本身没有直接 import 或调用tiktoken调用发生在lightrag库内部。解决方式是给tiktoken提供一个本地模型缓存目录并在应用启动前通过TIKTOKEN_CACHE_DIR环境变量指过去。设置后tiktoken会到该目录找模型文件而不是联网下载。整个过程分三步在线机器生成缓存、配置.env、离线环境运行验证。第一步在联网环境生成 tiktoken 缓存文档要求这一步在有网络的环境里完成docs/offline_setup.md。在 RAG-Anything 项目根目录下执行uv run scripts/create_tiktoken_cache.py这个脚本会创建tiktoken_cache目录不存在时自动新建然后下载并缓存 tiktoken 模型文件。它的全部逻辑可以对照 scripts/create_tiktoken_cache.pyimport tiktoken import os # Define the directory where you want to store the cache cache_dir ./tiktoken_cache if TIKTOKEN_CACHE_DIR not in os.environ: os.environ[TIKTOKEN_CACHE_DIR] cache_dir # Create the directory if it doesnt exist if not os.path.exists(cache_dir): os.makedirs(cache_dir) print(Downloading and caching tiktoken models...) tiktoken.get_encoding(cl100k_base) # tiktoken.get_encoding(p50k_base) print(ftiktoken models have been cached in {cache_dir})两个执行细节缓存目录是相对路径./tiktoken_cache取决于执行命令时的工作目录所以要在项目根目录运行缓存就会落在项目根下脚本默认只缓存cl100k_base这个 encodingp50k_base一行在源码中是注释掉的。如果你的部署需要其他 encoding需要自行启用对应行。脚本执行完会打印tiktoken models have been cached in ./tiktoken_cache此时把整个项目连同tiktoken_cache目录带到离线环境即可。第二步配置 TIKTOKEN_CACHE_DIR在项目的.env文件中加入TIKTOKEN_CACHE_DIR./tiktoken_cache仓库自带的 env.example 里已经预留了这个配置位默认注释状态### Tiktoken Cache Configuration (for offline deployment) ### Set this to a local directory containing cached tiktoken models ### This prevents tiktoken from downloading models from the internet on initialization ### See docs/offline_setup.md for setup instructions # TIKTOKEN_CACHE_DIR./tiktoken_cache取消注释或直接写入该行即可让./tiktoken_cache指向缓存目录的实际位置。关键的前置条件.env必须在LightRAGimporttiktoken之前被加载否则环境变量对这次初始化不生效。RAG-Anything 的主入口已经处理了这个顺序raganything/raganything.py 在 importlightrag之前执行# Load environment variables from .env file BEFORE importing LightRAG # This is critical for TIKTOKEN_CACHE_DIR to work properly in offline environments # The OS environment variables take precedence over the .env file load_dotenv(dotenv_path.env, overrideFalse)也就是说用项目自带的示例脚本启动时顺序天然正确文档强调这点是因为如果你在自定义入口里引入RAGAnything/LightRAG要先load_dotenv再 import。另外源码注释说明操作系统环境变量优先于.env文件——如果机器上已经设过TIKTOKEN_CACHE_DIR.env里写的值不会覆盖它。第三步断网运行验证docs/offline_setup.md 给出的离线验证流程如下按顺序执行确认项目根目录下存在tiktoken_cache目录没有则先创建运行uv run scripts/create_tiktoken_cache.py将模型文件下载进tiktoken_cache离线机上这一步不能联网跑所以实际是把在线机器上生成好的缓存目录一起带过来在.env中写入TIKTOKEN_CACHE_DIR./tiktoken_cache断开网络禁用网络连接或开启飞行模式确保验证时机器确实没有外网启动应用例如文档给出的示例命令uv run examples/raganything_example.py requirements.txt判断标准应用在断网状态下能够正常完成LightRAG初始化并运行不再出现上面那条HTTPSConnectionPool下载失败的报错就说明网络依赖已消除。文档的结论是按这些步骤操作后RAG-Anything 可以在完全离线的环境中成功运行。限制与边界这个方案只解决tiktoken模型下载这一条网络依赖。离线机上其他配置项如 env.example 中的LLM_BINDING_HOST、EMBEDDING_BINDING_HOST等指向的外部服务仍需指向离线网内实际可达的地址文档未对这部分做统一说明。TIKTOKEN_CACHE_DIR生效的前提是应用启动前已设置如果你的启动方式绕过了项目的load_dotenv逻辑例如自己写脚本直接 importlightrag环境变量不会自动生效需要自行保证加载顺序。缓存内容取决于scripts/create_tiktoken_cache.py实际调用的 encoding当前默认仅cl100k_base换用其他 encoding 时对应的模型文件不在缓存里离线环境仍会失败。【免费下载链接】RAG-AnythingRAG-Anything: All-in-One RAG Framework项目地址: https://gitcode.com/GitHub_Trending/ra/RAG-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考