trelix-langchain
LangChain retriever for trelix — semantic code search using Tree-sitter AST parsing, hybrid BM25+vector search, and call-graph expansion.
Install
pip install trelix-langchain
For AWS Bedrock embeddings (Cohere or Titan):
pip install "trelix-langchain[bedrock]"
Basic Usage
from trelix_langchain import TrelixRetriever
# First index your repo (one-time)
# trelix index /path/to/repo
retriever = TrelixRetriever(repo_path="/path/to/repo", k=10)
docs = retriever.invoke("how does authentication work?")
for doc in docs:
print(doc.metadata["source"], doc.metadata["score"])
print(doc.page_content[:200])
Each returned Document carries rich metadata:
| Metadata key | Example value |
|---|---|
source |
"src/auth/middleware.py" |
symbol |
"auth.middleware.require_login" |
language |
"python" |
kind |
"function" |
lines |
"42-78" |
score |
0.91 |
retrieval_source |
"hybrid" |
LangChain RAG Chain (LCEL)
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
from trelix_langchain import TrelixRetriever
retriever = TrelixRetriever(repo_path="/path/to/repo", k=8)
prompt = ChatPromptTemplate.from_template(
"Answer the question using only the code context below.\n\n"
"Context:\n{context}\n\n"
"Question: {question}"
)
def format_docs(docs):
return "\n\n".join(
f"# {d.metadata['source']} ({d.metadata['symbol']})\n{d.page_content}"
for d in docs
)
chain = (
{"context": retriever | format_docs, "question": RunnablePassthrough()}
| prompt
| ChatOpenAI(model="gpt-4o")
| StrOutputParser()
)
answer = chain.invoke("How does the authentication middleware work?")
print(answer)
RetrievalQA (classic interface)
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
from trelix_langchain import TrelixRetriever
retriever = TrelixRetriever(repo_path="/path/to/repo", k=10)
llm = ChatOpenAI(model="gpt-4o")
qa = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True,
)
result = qa.invoke({"query": "Where is rate limiting applied?"})
print(result["result"])
for doc in result["source_documents"]:
print(" -", doc.metadata["source"])
Configuration
| Env var | Default | Description |
|---|---|---|
TRELIX_EMBEDDER_PROVIDER |
local |
Embedding provider: local | local-code | openai | azure | voyage | bedrock-cohere | bedrock-titan |
OPENAI_API_KEY |
— | Required for openai provider |
AZURE_API_KEY |
— | Required for azure provider |
AWS_ACCESS_KEY_ID |
— | Required for Bedrock providers |
AWS_SECRET_ACCESS_KEY |
— | Required for Bedrock providers |
AWS_DEFAULT_REGION |
us-east-1 |
AWS region for Bedrock |
You can also set the provider directly on the retriever instance:
retriever = TrelixRetriever(repo_path="/path/to/repo", provider="openai", k=10)
Provider Switching (v0.7.0+)
# Use Bedrock Cohere embeddings (best retrieval quality, reuses AWS credentials)
TRELIX_EMBEDDER_PROVIDER=bedrock-cohere trelix index /path/to/repo
# Use Azure OpenAI embeddings
TRELIX_EMBEDDER_PROVIDER=azure trelix index /path/to/repo
# Use local sentence-transformers (no API key needed, works offline)
TRELIX_EMBEDDER_PROVIDER=local trelix index /path/to/repo
The index and the retriever must use the same provider — re-index whenever you switch.
Links
- trelix on GitHub
- trelix on PyPI
- trelix-mcp — MCP server for Claude Code, Cursor, Windsurf
- trelix-llama-index — LlamaIndex retriever
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file trelix_langchain-2.0.0.tar.gz.
File metadata
- Download URL: trelix_langchain-2.0.0.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc11c8cfe862b91812af97cb867ba055390822f9ddb573059821ca3d2374ed39
|
|
| MD5 |
6e38545d595b6118596d4308e08a7cdf
|
|
| BLAKE2b-256 |
8abda51808656618ee630b4b8140ef37de749b8791991e1500092326cd4f371e
|
Provenance
The following attestation bundles were made for trelix_langchain-2.0.0.tar.gz:
Publisher:
release.yml on sairam0424/trelix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
trelix_langchain-2.0.0.tar.gz -
Subject digest:
bc11c8cfe862b91812af97cb867ba055390822f9ddb573059821ca3d2374ed39 - Sigstore transparency entry: 2007022437
- Sigstore integration time:
-
Permalink:
sairam0424/trelix@34543cc1790d242da2b0f31c26edd6c0755e9d9a -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/sairam0424
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34543cc1790d242da2b0f31c26edd6c0755e9d9a -
Trigger Event:
push
-
Statement type:
File details
Details for the file trelix_langchain-2.0.0-py3-none-any.whl.
File metadata
- Download URL: trelix_langchain-2.0.0-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
beed29c71c8d0bf4217956aae594b64b769d892d62592cbd95852dec367d0b85
|
|
| MD5 |
4268cda0f8c2469acd6dbfdba98e4040
|
|
| BLAKE2b-256 |
876657ce2a8457abeb74ab3ff563315680ab06689250cc720cc3ab1fafd3af7a
|
Provenance
The following attestation bundles were made for trelix_langchain-2.0.0-py3-none-any.whl:
Publisher:
release.yml on sairam0424/trelix
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
trelix_langchain-2.0.0-py3-none-any.whl -
Subject digest:
beed29c71c8d0bf4217956aae594b64b769d892d62592cbd95852dec367d0b85 - Sigstore transparency entry: 2007022606
- Sigstore integration time:
-
Permalink:
sairam0424/trelix@34543cc1790d242da2b0f31c26edd6c0755e9d9a -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/sairam0424
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34543cc1790d242da2b0f31c26edd6c0755e9d9a -
Trigger Event:
push
-
Statement type: