langchain-community review
langchain-community 0.4.2 holds third-party LangChain adapters that did not live in the core contracts: document loaders, vector-store clients, retrievers, search tools, SQL helpers, caches, and older provider wrappers. The decisive current-version fact is the project's own sunset notice. Its GitHub repository is archived, and the release directs maintained integrations toward separate partner packages. Our Python 3.12 install still worked, shipped typing metadata, and produced no audit findings, but it expanded to 47 installed packages and 150 MB before any provider-specific extra was added. Treat it as compatibility code for existing imports, not the default integration catalog for a new LangChain application.
langchain-community 0.4.2 installed successfully but left 47 packages and 150 MB in our sandbox, and its repository is now archived. Keep it only for legacy imports or an integration with no maintained home; new provider work belongs in the relevant partner package.
We installed it
| Install | ✓ · 1.2s | 47 packages on disk · 150 MB |
| Import | ✓ | import langchain_community in 0.23s · pure Python · py.typed · requires Python <4.0.0,>=3.10.0 |
| Known vulns | 0 | (pip-audit) |
Answers from our run
Does langchain-community install cleanly?
Yes. In a fresh container with an empty cache, pip install langchain-community finished in 1 seconds, leaving 47 packages and 150 MB on disk. pip-audit reported no known vulnerabilities.
What does langchain-community need to run?
Python <4.0.0,>=3.10.0, and nothing compiled: it is pure Python. In our run import langchain_community succeeded in 0.23s, and the package ships py.typed for type checkers.
langchain-community or langchain-openai: which should you use?
langchain-openai: Use the dedicated OpenAI adapter when chat and embedding support must follow current provider APIs. langchain-community 0.4.2 installed successfully but left 47 packages and 150 MB in our sandbox, and its repository is now archived.
When should you not use langchain-community?
This is a new project. The repository was archived after the 0.4.2 sunset release, so fresh integration choices should start with maintained provider packages.
Use it if
- An existing service has many `langchain_community` imports and needs a pinned bridge while those call sites move in small batches.
- A required loader, retriever, or utility has no maintained partner package and the team accepts owning fixes around it.
- The application already runs LangChain Core 1.x and must keep a 0.4.x community integration working during migration.
- You specifically need survivors such as `BM25Retriever` or `SQLDatabase`, after checking that no newer package owns that class.
- This is a new project. The repository was archived after the 0.4.2 sunset release, so fresh integration choices should start with maintained provider packages.
- The class already moved to `langchain-openai`, `langchain-anthropic`, `langchain-ollama`, `langchain-huggingface`, or another named partner package.
- A narrow loader cannot justify our measured 47-package, 150 MB base installation before its own optional parser or SDK arrives.
- You need fast support for provider API changes. Archived community wrappers can lag authentication, tool-calling, model names, or response formats.
- Untrusted data would reach `FAISS.load_local(..., allow_dangerous_deserialization=True)` or model-written SQL. Those paths load pickle metadata or execute database statements and need an application security boundary.
Setup reality
We installed langchain-community 0.4.2 in a fresh Python 3.12 Bookworm sandbox. The install succeeded in 1.2 seconds, left 47 packages, and occupied 150 MB. Its distribution declares 12 direct dependencies, requires Python 3.10 through the 3.x line, is pure Python, and includes py.typed. import langchain_community completed in 0.23 seconds. pip-audit found 0 known vulnerabilities in that resolved environment.
Those 47 packages are only the common floor. Individual adapters import their backing libraries when used: FAISS needs faiss-cpu, PyPDFLoader needs pypdf, BM25Retriever needs rank_bm25, and web parsing commonly needs Beautiful Soup. A clean install can import the namespace yet fail on the first real integration call. Pin every chosen extra beside 0.4.2 and exercise the actual loader or store in CI.
Credentials belong to each provider, not to a shared community login. OpenAI embeddings read OpenAI credentials, search wrappers use their own API keys, and database utilities need a connection URI with carefully limited privileges. The package requires langchain-core>=1.4,<2 and brings langchain-classic, so resolve the whole LangChain family together. Mixing older examples with Core 1.x often fails at imports or invocation methods.
Local persistence carries separate risks. FAISS.load_local requires an explicit dangerous-deserialization flag because metadata uses pickle; never enable it for an index from another party. SQLDatabase.run sends SQL to the configured database, so a model-generated statement needs allowlisting or an isolated read-only account. The 0.4.2 repository is archived. If an upstream SDK breaks a wrapper, migration or a private patch is now the realistic response.
Patterns
Pin the compatibility layer and extras install-pinned
pip install "langchain-community>=0.4,<0.5" langchain-core
# each integration needs its own extra package, e.g.:
pip install faiss-cpu pypdf rank_bm25An import of the base package does not test FAISS, PDF, or BM25 support. Each adapter can raise ImportError only when constructed, so CI must execute the chosen path.
Create Documents from HTML and PDF load-documents
from langchain_community.document_loaders import WebBaseLoader, PyPDFLoader
web_docs = WebBaseLoader("https://example.com/post").load()
pdf_docs = PyPDFLoader("report.pdf").load() # one Document per page
print(pdf_docs[0].metadata) # {'source': 'report.pdf', 'page': 0, ...}Install Beautiful Soup for the web loader and pypdf for the PDF loader. Both return Core 1.x Document instances with source metadata.
Index text in local FAISS vector-store-faiss
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
vs = FAISS.from_texts(["cats purr", "dogs bark"], OpenAIEmbeddings())
retriever = vs.as_retriever(search_kwargs={"k": 2})
print(retriever.invoke("what do cats do?"))This class needs `faiss-cpu` and keeps the index inside the process. A shared vector service should use its maintained Chroma, Qdrant, or provider adapter.
Save and reopen a trusted index save-load-faiss
vs.save_local("faiss_index")
from langchain_community.vectorstores import FAISS
vs2 = FAISS.load_local(
"faiss_index", OpenAIEmbeddings(),
allow_dangerous_deserialization=True,
)The metadata file is pickle. The explicit flag acknowledges code-execution risk, so never set it for downloaded or user-supplied indexes.
Rank local text with BM25 bm25-retriever
from langchain_community.retrievers import BM25Retriever
retriever = BM25Retriever.from_texts(
["error handling in python", "async io patterns", "bm25 ranking"]
)
retriever.k = 2
print(retriever.invoke("python errors"))`rank_bm25` is an undeclared adapter dependency. BM25Retriever is also one of the long-tail classes that can justify a temporary community pin.
Expose a database to SQL chains sql-database-utility
from langchain_community.utilities import SQLDatabase
db = SQLDatabase.from_uri("sqlite:///app.db")
print(db.get_usable_table_names())
print(db.run("SELECT count(*) FROM users"))SQLAlchemy is in the base install. `db.run` executes the supplied statement, so use a read-only database role and validate any model-produced query.
Replace the old Ollama import chat-model-deprecated
# still works, but emits a deprecation warning:
from langchain_community.chat_models import ChatOllama
llm = ChatOllama(model="llama3")
# maintained replacement:
# pip install langchain-ollama
from langchain_ollama import ChatOllama as ChatOllamaNew
llm = ChatOllamaNew(model="llama3")The partner distribution owns current Ollama changes. Leaving the deprecated class in place risks missing later tool-call and response-shape support.
Move Hugging Face embeddings embeddings-migration
# old (deprecated, warns):
from langchain_community.embeddings import HuggingFaceEmbeddings
# new (maintained):
# pip install langchain-huggingface
from langchain_huggingface import HuggingFaceEmbeddings
emb = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")Constructor compatibility makes this migration mostly an import change. Test model download, device selection, and encoding output after switching packages.
Call DuckDuckGo through a tool search-tool
from langchain_community.tools import DuckDuckGoSearchRun
search = DuckDuckGoSearchRun()
print(search.invoke("starlette 1.0 release date"))Install `ddgs`, the renamed search dependency. The wrapper depends on upstream page behavior, and this archived repository will not repair a future break.
Store identical LLM responses in SQLite llm-cache
from langchain_core.globals import set_llm_cache
from langchain_community.cache import SQLiteCache
set_llm_cache(SQLiteCache(database_path=".langchain.db"))
# identical prompts now return the cached responseThe cache identity includes the rendered prompt and model parameters. Even a small template change creates a new entry instead of reusing the old response.
Inventory remaining community imports audit-imports
grep -rn "from langchain_community" --include="*.py" . | sort | uniq -c
# migrate anything with a partner package equivalent;
# keep only the long-tail classes with no new homeReview each match against the current partner-package list. Keep only classes without a maintained destination and record who owns their migration.
Alternatives
| Package | Registry | Pick it when |
|---|---|---|
| langchain-openai | PyPI | Use the dedicated OpenAI adapter when chat and embedding support must follow current provider APIs. |
| langchain-huggingface | PyPI | Use it for Hugging Face embeddings and pipelines that have already moved out of the community namespace. |
| llama-index | PyPI | Choose it for document-heavy retrieval work when its indexing model fits better than LangChain's runnable stack. |
| haystack-ai | PyPI | Choose it when explicit retrieval pipelines and maintained components matter more than LangChain compatibility. |
More ai / ml guides
openai · mcp · huggingface-hub · scikit-learn · tiktoken · @modelcontextprotocol/sdk · the whole shelf →
How this guide is made: grounded in the library's documentation, release notes, changelog, and issue history, on a fixed rubric — not a hands-on install of every release. The 50 most-downloaded entries are additionally install-verified in clean containers. Corrections: contact the desk.

