langchain-sourcey
Implement Ask AI over a published Sourcey docs site.
langchain-sourcey reads Sourcey's generated search and LLM artefacts and
returns canonical page URLs for citation.
Sourcey already emits the files a retriever needs:
search-index.jsonfor candidate discoveryllms-full.txtfor full-page hydration- canonical page URLs for citations
No hosted index is required. Point site_url at the docs root and use it.
Install
pip install -U langchain-sourcey
Point site_url at the root of a published Sourcey build:
https://sourcey.com/docshttps://sourcey.com/cheesestorehttps://cheesestore.github.io
Quickstart
from langchain_sourcey import SourceyRetriever
retriever = SourceyRetriever(
site_url="https://sourcey.com/docs",
top_k=3,
)
docs = retriever.invoke("mcp integration")
for doc in docs:
print(doc.metadata["title"])
print(doc.metadata["source"])
print(doc.page_content[:160])
print()
For a runnable script, see examples/live_quickstart.py.
More context: Sourcey guide
Implement Ask AI
Install a chat model package. This example uses OpenAI:
pip install -U langchain-openai
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
from langchain_sourcey import SourceyRetriever
retriever = SourceyRetriever(site_url="https://sourcey.com/docs", top_k=3)
prompt = ChatPromptTemplate.from_template(
"""Answer the question using the documentation context below.
{context}
Question: {question}"""
)
chain = (
RunnablePassthrough.assign(context=(lambda x: x["question"]) | retriever)
| prompt
| ChatOpenAI(model="gpt-4.1-mini")
| StrOutputParser()
)
answer = chain.invoke({"question": "How does Sourcey document MCP servers?"})
print(answer)
For a fuller example, see examples/rag_chain.py.
Sourcey Output Contract
For predictable retrieval, the published Sourcey site should expose:
- publish
search-index.json - publish
llms-full.txt - set
siteUrlinsourcey.config.tsso citations are canonical
search-index.json is required.
llms-full.txt is strongly recommended. If it is missing, the retriever falls
back to the matched page HTML.
Returned Metadata
Each returned Document includes:
source: canonical page URL used for citationsmatched_url: original matched URL, including anchors when relevantmatched_title: matched search entry titletitle: hydrated page titlepath: Sourcey output path such asguides/search.htmlanchor: matched fragment, if anytab: Sourcey tab labelcategory: Sourcey search categorysite_url: docs root used for retrievalscore: retriever ranking score
Development
python -m pip install -e .[dev] build twine
PYTHONPATH=src pytest -q
SOURCEY_TEST_SITE_URL=https://sourcey.com/docs PYTHONPATH=src pytest tests/integration_tests/test_live_retriever.py -q
python -m build
python -m twine check dist/*
See CONTRIBUTING.md for the release and verification flow.
LangChain Submission Assets
This repo includes draft docs ready to turn into a LangChain docs PR:
JavaScript Package
This repo also contains the JavaScript package in js.
- npm package:
langchain-sourcey - draft JS docs: docs/langchain-js/provider-sourcey.mdx
- draft JS docs: docs/langchain-js/retriever-sourcey.mdx
Scope
This package ships SourceyRetriever only. No loader yet.
Metadata
Release files for langchain-sourcey 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| langchain_sourcey-0.1.7.tar.gz | 65.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| langchain_sourcey-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 96.8 kB
Release files / langchain_sourcey-0.1.7.tar.gz
| Download URL | langchain_sourcey-0.1.7.tar.gz |
|---|---|
| Size | 65.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fd109d261fbed26d3dfd26a9b085db23bec4e5ff2aad91f1076e53b2a91732d2
|
|
BLAKE2b-256 checksum How to use checksums |
74f8116611341499ba2a233f43e264491797c08038b3b96a801ff60e6458ab03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|
Release files / langchain_sourcey-0.1.7-py3-none-any.whl
| Download URL | langchain_sourcey-0.1.7-py3-none-any.whl |
|---|---|
| Size | 31.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4e9bdd00643caf90a690a20e641eddc05939ae1b0fa2c385adf7980a7307d467
|
|
BLAKE2b-256 checksum How to use checksums |
dcd3ca117d268bba918caeb9ba99e7cca46390e0040a64d866890179e7a9c8e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.8
|