- C (*)
- C++ (*)
- C# (*)
- COBOL
- Elixir
- Go (*)
- Java (*)
- JavaScript(需要
esprima包) - Kotlin (*)
- Lua (*)
- Perl (*)
- Python
- Ruby (*)
- Rust (*)
- Scala (*)
- TypeScript (*)
tree_sitter 和 tree_sitter_languages 包。
使用 tree_sitter 添加对其他语言的支持较为直接,
但目前需要修改 LangChain 源码。
可配置用于解析的语言,以及激活基于语法拆分所需的最小行数。
如果未明确指定语言,LanguageParser 将根据文件扩展名(如有)自动推断。
parser_threshold 参数指定源代码文件使用解析器进行分段所需的最小行数。
拆分
对于过大的函数、类或脚本,可能还需要进行额外的拆分。使用 tree-sitter 模板添加语言支持
使用 Tree-Sitter 模板扩展语言支持需要以下几个步骤:- 创建新的语言文件:
- 在指定目录(langchain/libs/community/langchain_community/document_loaders/parsers/language)下创建新文件。
- 参照现有语言文件(如
cpp.py)的结构和解析逻辑。 - 还需在 langchain 目录(langchain/libs/langchain/langchain/document_loaders/parsers/language)下创建文件。
- 解析语言特性:
- 模仿
cpp.py文件的结构,将其适配到您要添加的语言。 - 主要改动是调整 chunk query 数组,以适应目标语言的语法和结构。
- 模仿
- 测试语言解析器:
- 为充分验证,为新语言生成专项测试文件。在指定目录(langchain/libs/community/tests/unit_tests/document_loaders/parsers/language)下创建
test_language.py。 - 参照
test_cpp.py为新语言中的已解析元素建立基础测试。
- 为充分验证,为新语言生成专项测试文件。在指定目录(langchain/libs/community/tests/unit_tests/document_loaders/parsers/language)下创建
- 集成到解析器和文本分割器:
- 在
language_parser.py文件中加入新语言。确保更新 LANGUAGE_EXTENSIONS 和 LANGUAGE_SEGMENTERS,以及 LanguageParser 的文档字符串,以识别和处理新增语言。 - 同时确认
text_splitter.py中的 Language 类也包含了您的语言,以便正确解析。
- 在
将这些文档连接到 Claude、VSCode 等,通过 MCP 获取实时解答。

