The daily firehose — everything the toolchain shipped today, already filtered.
// HOW THIS ISSUE IS MADE
We read every release from the 174 tools on our watchlist at the source — GitHub and GitLab release notes, vendor release pages and changelogs, project blogs and feeds, vendor press releases, and the source code behind the tag. Bug-fix-only releases and non-product newsroom noise are dropped; what's left is summarized down to the new capability, how to try it, and any screenshots or videos the release itself published. Every entry links to the sources it was built from.
Haystack v1.15.0 adds LLM Agents with Tools, ChatGPT support via gpt-3.5-turbo, AnswerParser, JsonConverter, Whisper node, and Azure OpenAI embeddings.
└──▷ GET THIS VERSION
$ git clone --branch v1.15.0 https://github.com/deepset-ai/haystack.git
# already have the repo? check out this version:$ git checkout v1.15.0
└──▷ USE IT
Build a multi-hop web QA agent that loops over a search tool to answer complex questions.
python
web_qa_tool = Tool(
name="Search",
pipeline_or_node=WebQAPipeline(retriever=web_retriever, prompt_node=web_qa_pn),
description="useful for when you need to Google questions.",
output_variable="results",
)
agent = Agent(
prompt_node=agent_pn,
prompt_template=prompt_template,
tools=[web_qa_tool],
final_answer_pattern=r"Final Answer\s*:\s*(.*)",
)
agent.run(query="What is the capital of the country that won the 2022 FIFA World Cup?")
Parse LLM answers directly into Haystack Answer objects using AnswerParser inside a PromptTemplate.
python
PromptTemplate(
name="question-answering",
prompt_text="Given the context please answer the question.\nContext: {join(documents)}\nQuestion: {query}\nAnswer: ",
output_parser=AnswerParser(),
)
Chat with ChatGPT in a multi-turn conversation using PromptModel with gpt-3.5-turbo.
python
prompt_model = PromptModel("gpt-3.5-turbo", api_key=api_key)
prompt_node = PromptNode(prompt_model)
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"},
]
result = prompt_node(messages)
›Adds Agent class and Tool wrapper, enabling LLM-driven agents that dynamically plan and execute multi-step actions using a list of Tool objects and a PromptNode; configured via prompt_node, prompt_template, tools, and final_answer_pattern arguments, and invoked with agent.run(query=...).
›Adds output_parser parameter to PromptTemplate, with a built-in AnswerParser that converts raw LLM output into Haystack Answer, Document, or Label objects.
›Adds function-call syntax inside prompt_text (e.g., {join(documents)}) to PromptTemplate, enabling in-template transformations of input documents.
›Adds top_k parameter to PromptNode for controlling the number of outputs returned.
›Adds JsonConverter node for converting pipeline outputs to JSON format.
+7 moreshow less
›Adds Whisper node for audio transcription within Haystack pipelines.
›Adds Azure OpenAI embeddings support, enabling Azure as an OpenAI-compatible endpoint for embedding and prompt operations.
›Adds support for ChatGPT (gpt-3.5-turbo) through PromptModel, including multi-turn chat via a message list with role and content fields.
›Adds automatic OCR detection mechanism to PDF converters, improving performance by only invoking OCR when needed.
›Adds execution time reporting for pipeline components in _debug output.
›Exposes prompt text to Answer and EvaluationResult objects for traceability.
›Extracts AnswerToSpeech and DocumentToSpeech into the separate haystack-extras repo, installable via pip install farm-haystack-text2speech.
└──▷ BREAKING ON UPGRADE
!OpenDistroElasticsearchDocumentStore has been removed; any code referencing it will break on upgrade.
!AnswerToSpeech and DocumentToSpeech nodes have been removed from the main package; install farm-haystack-text2speech from the haystack-extras repo to continue using them.
!ElasticsearchRetriever and ElasticsearchFilterOnlyRetriever have been removed.
!The id_hash_keys parameter has been removed from the from_dict method.
!The REST API Dockerfile now uses uvicorn instead of gunicorn as the server; deployments that relied on gunicorn-specific behavior or config will need updating.
!Crawler standardization changes increase conformance with Pipeline conventions but may break existing Crawler configurations.
!PDFToTextConverter multiprocessing changes simplify installation but alter prior behavior; existing setups should be tested.
LangChain v0.0.120 adds OpenSearch and RediSearch vector stores, Figma doc loader, metadata filtering for PGVector and Chroma, and a human-as-tool input.
└──▷ GET THIS VERSION
$ git clone --branch v0.0.120 https://github.com/langchain-ai/langchain.git
# already have the repo? check out this version:$ git checkout v0.0.120
›Adds metadata filter support to PGVector similarity search, enabling filtered vector queries against Postgres collections.
›Adds collection metadata support to PGVector, allowing richer per-collection context to be stored and retrieved.
›Propagates the filter argument in Chromasimilarity_search, so metadata filters are now applied correctly during Chroma queries.
›Adds a new OpenSearch vector store integration, enabling semantic search over OpenSearch indices.
›Adds a new RediSearch vector store integration for semantic search backed by Redis.
+3 moreshow less
›Adds drop-index support to the Redis vector store.
›Adds a Figma document loader, enabling ingestion of Figma file content as LangChain documents.
›Adds a human-as-a-tool capability, allowing agents to prompt a human for input as one of their available tools.
LlamaIndex v0.5.0 overhauls its data model, composability API, and query pipeline with a new migration tool.
└──▷ GET THIS VERSION
$ git clone --branch v0.5.0 https://github.com/run-llama/llama_index.git
# already have the repo? check out this version:$ git checkout v0.5.0
└──▷ TRY IT
Migrate a saved tree index JSON file from v0.4.x to v0.5.0 before loading it in the new version.
$ python gpt_index/tools/migrate_v1_to_v2.py --v1_path tree_v1.json --index_struct_type tree --v2_path tree_v2.json
Compose a hierarchical graph from multiple sub-indices, each with a summary that guides top-level routing.
python
from llama_index import ComposableGraph
graph = ComposableGraph.build_from_indices(
[index_a, index_b],
summaries=["Summary of index A", "Summary of index B"]
)
›Adds from_documents class method on index classes as the new entry point for feeding documents directly into an index.
›Introduces ServiceContext container to consolidate custom LLMs, embedding models, chunk sizes, and prompt helpers into a single argument.
›Introduces ComposableGraph.build_from_indices(subindices, summaries) as the new API for composing hierarchical index graphs, backed by a CompositeIndexStruct.
›Adds index.index_struct.index_id and index.index_struct.summary as the canonical fields for setting index identity and summary metadata.
›Adds a migration tool at gpt_index/tools/migrate_v1_to_v2.py with --v1_path, --index_struct_type, and --v2_path flags to upgrade saved index JSON from 0.4.x to 0.5.0.
+3 moreshow less
›Introduces retrieve and synthesize methods on query classes to decouple node selection from answer synthesis.
›Nodes are now stored in DocumentStore instead of IndexStruct, enabling reuse of the same node across multiple indices without duplication.
›Node data model now tracks relationships between document chunks (e.g. ordering, source document) independently of any index struct.
└──▷ BREAKING ON UPGRADE
!Index constructors now accept Node objects instead of Document objects; use the new from_documents class method to retain the previous document-based API.
!index.set_doc_id is removed; set the index ID via index.index_struct.index_id = <value> instead.
!The composable graph API has changed; replace previous graph construction calls with ComposableGraph.build_from_indices.
!Common constructor arguments (LLM, embedding model, chunk size, prompt helper) must now be passed via a ServiceContext container rather than directly.
!Saved index JSON files from 0.4.x are not directly compatible with 0.5.0 and must be migrated using gpt_index/tools/migrate_v1_to_v2.py.
6 more releases in this issue
· 2023-03-06 → 2023-03-28
KoboldCpp v1.0.4 adds prompt token caching for faster generation and standalone PyInstaller executables for distribution.
└──▷ GET THIS VERSION
$ git clone --branch v1.0.4 https://github.com/LostRuins/koboldcpp.git
# already have the repo? check out this version:$ git checkout v1.0.4
›Adds token caching for prompts, enabling fast-forward through partially duplicated prompt prefixes so edits near the end of a previous prompt regenerate significantly faster.
›Introduces a standalone PyInstaller-built llamacpp_for_kobold.exe for all future releases, supporting drag-and-drop model loading or interactive model selection via a popup dialog.
Triton v2.32.0 adds Parameters Extension, decoupled BLS, model namespacing, pluggable cache API, and request_id tracing
└──▷ GET THIS VERSION
$ git clone --branch v2.32.0 https://github.com/triton-inference-server/server.git
# already have the repo? check out this version:$ git checkout v2.32.0
└──▷ TRY IT
Run Triton with model namespacing enabled so identical model names in different repositories do not collide.
›Adds --model-namespacing flag to allow the same model name to be used across different model repositories.
›Adds --cache-config flag as the preferred method for configuring the response cache, backed by the new TRITONCACHE shared-library API; --response-cache-byte-size continues to work.
›Introduces the Parameters Extension, enabling inference requests to supply custom parameters that cannot be passed as inputs, accessible in the Python backend via inference request parameters.
›Adds support for models using the decoupled API for Business Scripting Logic (BLS) in the Python backend.
›Extends the trace tool to support tracing by request_id.
+1 moreshow less
›Converts the Response Cache to a pluggable shared-library architecture (TRITONCACHE APIs), with local_cache as the default implementation.
1 more release in this issue
· 2023-03-01 → 2023-03-28
Triton v2.31.0 adds ensemble model support in Model Analyzer and GRPC Standard Health Check Protocol.
└──▷ GET THIS VERSION
$ git clone --branch v2.31.0 https://github.com/triton-inference-server/server.git
# already have the repo? check out this version:$ git checkout v2.31.0
›Adds support for the GRPC Standard Health Check Protocol on the inference server endpoint.
›Adds ensemble model support in Model Analyzer, enabling config search across ensemble pipelines.
Zed v0.76.1 adds a language selector modal, base keymap setting for VS Code/Atom/JetBrains/Sublime, and a Welcome page.
└──▷ GET THIS VERSION
$ git clone --branch v0.76.1 https://github.com/zed-industries/zed.git
# already have the repo? check out this version:$ git checkout v0.76.1
›Adds base_keymap setting to configure default key bindings to match VS Code, Atom, JetBrains, or Sublime Text, with a toggle base keymap selector action to switch between them.
›Adds language selector: toggle action (also accessible by clicking the language name in the status bar) to change the language for the current buffer.
›Adds a 'Welcome' page shown on first launch, also available via the workspace: welcome action.
›Adds a button in the project panel to prompt opening a project.
›Changes the workspace to always open the dock in a new project, with the default dock anchor position now set to bottom.
+2 moreshow less
›Changes the open CLI command behavior to reuse the existing window instead of opening a new one.
›Adds a pop-up notification when the CLI succeeds or fails to install.
Milvus 2.2.4 adds resource grouping for QueryNodes, collection renaming, Google Cloud Storage support, and a new search/query performance option.
└──▷ GET THIS VERSION
$ git clone --branch v2.2.4 https://github.com/milvus-io/milvus.git
# already have the repo? check out this version:$ git checkout v2.2.4
›Adds a new option to the search() and query() APIs to skip searching all growing segments, trading data freshness for better search performance under insertion load.
›Adds RBAC controls for the GetLoadingProgress and GetLoadState APIs.
›Introduces namespace-based resource grouping: QueryNodes in a cluster can be assigned to isolated resource groups with fully separated access to physical resources.
›Adds a collection-renaming API (currently available in PyMilvus; other SDK support in progress).
›Adds Google Cloud Storage as a supported object storage backend.
+1 moreshow less
›Compaction is no longer restricted to indexed segments only, expanding when compaction can run.
›Adds /metrics API endpoint serving telemetry in OpenMetrics format, compatible with Prometheus and similar collectors.
›Adds wait=false parameter support to the snapshot recovery API, which also now tolerates disconnections mid-request.
›Introduces Scalar Quantization: compress vectors from float32 to int8 for up to 4x memory reduction and up to 2x speed improvement with minimal accuracy loss.
›Adds 'Match Any' filtering condition, allowing a set of values to be matched in a single filter expression.
›Adds experimental listener mode for dedicated backup machines and cross-regional backup topologies.
+3 moreshow less
›Adds Raft consensus checkpointing to optimize operations on long-running distributed clusters.
›Supports filtering conditions on nested data structures via nested key syntax.
›Snapshot recovery API now supports recovering snapshots taken in distributed mode on local deployments, and can recover into non-existent collections.
›Adds BACKUP_GCS_USE_AUTH environment variable to the backup-gcs module to allow alternative GCP authentication forms beyond default credentials.
›Adds Cursor API to scroll through every object in a class using an ID cursor, bypassing the QUERY_MAXIMUM_RESULTS limit at constant cost per page regardless of scale.
›Adds Azure Cloud Storage as a backup destination module, joining existing GCS and AWS S3 backup providers.
›Extends BM25 and Hybrid Search to support where filters, enabling combined keyword/vector + filter queries that were not possible in v1.17.
›Adds stopword support to BM25 scoring.
+7 moreshow less
›Extends all remaining replicated write and read endpoints with tunable consistency levels (including PUT and HEAD for objects, batch object reads, and object existence checks); changes the default consistency level from ALL to QUORUM.
›Adds automatic read-repair for replication: when Weaviate detects inconsistencies between replicas it repairs them automatically, including detection of deleted objects and concurrent repairs scaled to the configured consistency level.
›Introduces bitmap indexing (RoaringSet) for non-text properties in the LSM store, delivering up to 1,000x faster filtering; existing datasets continue working with the old index and a zero-downtime migration path is available.
›Adds optional HNSW-PQ (Product Quantization) vector compression, reducing memory footprint by 25–75% while retaining HNSW recall and performance.
›Reworks BM25 scoring to use the Weak-AND (WAND) algorithm with concurrent term evaluation, yielding more than 10x throughput improvement over v1.17.
›Adds API key authentication (API_KEY auth) that can be combined with existing OIDC authentication.
›Transfers backup files between S3, GCS, and Weaviate in a streaming fashion without loading file contents into memory.