Download Latest Version v8.0.0 source code.zip (928.2 kB)
Home / v8.0.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-11-03 5.9 kB
v8.0.0 source code.tar.gz 2026-11-03 699.1 kB
v8.0.0 source code.zip 2026-11-03 928.2 kB
Totals: 3 Items   1.6 MB 1

Highlights

This is a major release, but most code only needs the version bump. Migrating below covers the breaking changes, which mostly affect struct literals.

Reasoning and prompt caching.

  • Thinking/reasoning works with Claude, OpenAI, Ollama and DeepSeek. Turn it on with CallOptions::with_thinking, and the reasoning comes back in GenerateResult.thinking and on messages (#380).
  • Claude prompt caching via cache_control (#381). Every provider now reports cache reads and writes in TokenUsage.

Vector stores.

  • delete and get_by_ids on the VectorStore trait, implemented for every store (#382, [#383], [#384], closes [#139]).
  • Document.id: set your own ids, and re-adding the same id updates the document in place (#358 by @mvanhorn, [#378]).
  • New mariadb store on MariaDB 11.7+ with the native VECTOR type (#396).
  • pgvector can use pgvecto.rs through a configurable extension name (#390).

Agents. ReActAgent (the classic MRKL "Thought / Action / Observation" agent) for models without native tool calling. AgentExecutor gained a configurable parser error handler and can return intermediate steps (#385).

Chains.

  • TransformChain (#388).
  • APIChain, which reads API docs and calls the endpoint. It has allowed URLs and methods, a timeout and a response size cap (#389).

Tools.

  • PerplexitySearch (#391), ExaSearch (#392), and FirecrawlSearch / FirecrawlScrape (#397 by @erikengervall).
  • WebScrapper is now configurable: CSS selector, excluded tags, user agent, timeout and max chars (#395, closes [#3]).

Document loaders. AssemblyAILoader for audio transcripts (#393). NotionDirectoryLoader for Notion exports (#394).

Utilities.

  • count_tokens, model_context_size, calculate_max_tokens and combine_vectors (#387).
  • RegexDictParser and CombiningParser output parsers (#386).

Fixes.

  • Conversational streams stop at the first error instead of saving a half-finished turn to memory (#401 by @jihtsan).
  • ConversationalRetrieverChain keeps the question-condensing tokens when the answer comes from CachedLLM (#400 by @jihtsan).

Migrating from 7.x

Struct literals. Several public structs gained fields, so code that builds them with a struct literal needs ..Default::default() or the constructors:

  • TokenUsage: cache_read_tokens, cache_creation_tokens
  • CallOptions: thinking, prompt_caching
  • Message: thinking, cache_control
  • GenerateResult: thinking
  • LogTools: thinking

    :::rust let usage = TokenUsage { prompt_tokens: 10, completion_tokens: 5, total_tokens: 15, ..Default::default() }; // or let usage = TokenUsage::new(10, 5);

Document is #[non_exhaustive]. It also gained the id field. Build it with Document::new(text) plus the with_* methods, e.g. .with_metadata(...), .with_score(...), .with_id(...). The non_exhaustive mark means future fields won't need another major release.

WebScrapper.

  • It has private fields now, so build it with WebScrapper::new() or WebScrapper::default() and the builder methods.
  • It is no longer UnwindSafe/RefUnwindSafe, because it holds a reusable HTTP client.
  • Behaviour changes:
  • non-2xx responses are errors
  • only http/https URLs are accepted
  • <style>/<noscript> text is dropped
  • requests time out after 30 s by default

VectorStore::Options must be Sync. That's needed for the new default delete/get_by_ids methods. All the built-in option types already are; only custom stores with non-Sync options need a change.

What's Changed

  • feat: support custom document IDs in OpenSearch, pgvector, and Qdrant by @mvanhorn in [#358]
  • feat(vectorstore): caller document ids in the remaining network stores by @Abraxas-365 in [#378]
  • fix(deps): update rust crate gix to 0.90 by @renovate[bot] in [#277]
  • chore(deps): update actions/checkout action to v7 by @renovate[bot] in [#379]
  • feat: reasoning/thinking support (Claude, OpenAI, Ollama, DeepSeek) by @Abraxas-365 in [#380]
  • feat: prompt caching (Claude cache_control + cache usage) by @Abraxas-365 in [#381]
  • feat(vectorstore): delete and get_by_ids (pgvector, qdrant, redis, chroma) by @Abraxas-365 in [#382]
  • feat(vectorstore): delete and get_by_ids for mongodb, opensearch, pinecone, weaviate, milvus by @Abraxas-365 in [#383]
  • feat(vectorstore): delete and get_by_ids for sqlite-vec, sqlite-vss, surrealdb by @Abraxas-365 in [#384]
  • feat(agent): ReAct (MRKL) agent, parser error handler and intermediate steps by @Abraxas-365 in [#385]
  • feat(output_parsers): RegexDictParser and CombiningParser by @Abraxas-365 in [#386]
  • feat: token counting, context sizes and combine_vectors by @Abraxas-365 in [#387]
  • feat(chain): TransformChain by @Abraxas-365 in [#388]
  • feat(chain): APIChain by @Abraxas-365 in [#389]
  • feat(pgvector): configurable extension name, pgvecto.rs support by @Abraxas-365 in [#390]
  • feat(tools): PerplexitySearch tool on the Perplexity Search API by @Abraxas-365 in [#391]
  • feat(tools): Exa web search tool by @Abraxas-365 in [#392]
  • feat(document_loaders): AssemblyAI audio transcript loader by @Abraxas-365 in [#393]
  • feat(document_loaders): Notion export directory loader by @Abraxas-365 in [#394]
  • feat(tools): configurable WebScrapper (closes [#3]) by @Abraxas-365 in [#395]
  • feat(vectorstore): MariaDB vector store by @Abraxas-365 in [#396]
  • feat(tools): Firecrawl web search and scrape tools by @erikengervall in [#397]
  • Retain RAG condensation usage on answer cache hits by @jihtsan in [#400]
  • Stop failed conversational streams before saving memory by @jihtsan in [#401]

New Contributors

  • @mvanhorn made their first contribution in [#358]
  • @erikengervall made their first contribution in [#397]
  • @jihtsan made their first contribution in [#400]

Full Changelog: https://github.com/Abraxas-365/langchain-rust/compare/v7.0.0...v8.0.0

Source: README.md, updated 2026-11-03