Register and share your invite link to earn from video plays and referrals.

Search results for Weaviate
Weaviate community
One keyword maps to one global community path.
Create community
People
Not Found
Tweets including Weaviate
# Weaviate Features and Practical Usage 🚀 Ever wished you could delete all the embedding-API plumbing from your app code? Weaviate's model provider integrations let you wire up vectorization, generation, and reranking just by writing it into your collection config. 📌 Title and Feature URL Title: Model provider integrations URL: 📝 Overview Weaviate integrates with 20+ model providers including OpenAI, Cohere, Google, AWS, Azure OpenAI, Mistral, Anthropic, Hugging Face, and Ollama. You can plug them into automatic embedding at import, automatic embedding of query text, generation for RAG, and reranking of search results. The big win is that your application no longer needs code to call an embedding API and pass vectors in. 🔧 How It Works Integrations fall into three roles: - Vectorizer (embeddings): text or multimodal vectorization. - Generative (LLM): text generation for RAG pipelines. - Reranker: result refinement (offered by Cohere, Jina AI, NVIDIA, Voyage AI). There are also two delivery forms. API-based providers (OpenAI, Google, Cohere, AWS Bedrock, etc.) call external services, while locally hosted options (Ollama, Hugging Face Transformers, Model2vec) run on your own infrastructure. API-based modules are enabled by default in v1.33+. 🛠 Practical Usage - Specify an embedding provider with Configure.Vectors at collection creation, and Weaviate vectorizes automatically at both import and query time. - Configure generation with Configure.Generative to run RAG over your search results. - Configure a reranker with Configure.Reranker. - Automatic vectorization targets text / text[] properties. Weaviate sorts property names alphabetically, concatenates them, optionally prepends the collection name, and sends the string to the model (you can also exclude properties per-field). 🎯 Use Cases - Internal document search: auto-vectorize body text at import, and auto-vectorize the query with the same model so they stay consistent. - Model swapping: change vendor or model by editing collection config only. - Closed-network requirements: use a locally hosted option like Ollama to keep data in-house through embedding generation. - RAG chat: combine retrieval and generation within the same configuration, minimizing external orchestration. ⚠️ Caveats - API-based providers require API keys and incur usage charges. - Rate limits follow each provider's policy; watch out during bulk imports. - For versions before v1.27, the concatenated string is lowercased before being sent to the model. - For versions before v1.33, set ENABLE_API_BASED_MODULES to use API-based modules. #Weaviate# #Embeddings#
Show more
# Weaviate Features and Practical Usage 🚀 Need to pull every object, vectors included, for a migration or audit export? Stop fighting deep pagination. Weaviate's Cursor API walks the entire collection in order with no offset limit. 📌 Title and Feature URL Title: Read all objects URL: 📝 Overview Weaviate's iterator() method traverses an entire collection efficiently while avoiding the performance penalties of traditional offset-based pagination. Internally it uses a cursor based on the after operator, sidestepping the deep pagination problem. For any full-collection processing, using the cursor is the rule. 🔧 How It Works - limit/offset deep pagination slows down dramatically as the number of skipped records grows, which becomes critical at scale. - The cursor uses an after parameter to continue from where it left off, avoiding that slowdown. - The Python client wraps this as an Iterator, so a simple for loop walks all objects. - By default it returns all properties and UUIDs, excluding blob and reference properties. - Result ordering is not guaranteed; this is a mechanism for systematic full-collection access. 🛠 Practical Usage - Basic form: collection = client.collections.use("WineReview"), then for item in collection.iterator(): to walk every object, reading item.uuid and - To include vectors: for item in collection.iterator(include_vector=True): and read item.vector. - For named vectors, pass include_vector=['title', 'body'] or True for all vectors. - For multi-tenant collections, iterate per tenant with with_tenant(tenant_name).iterator(); get the tenant list via tenants.get(). 🎯 Use Cases - Migrate to another cluster by pulling vectors and properties together, then writing them back. - Export an entire collection for audit and compliance. - Access all objects sequentially for reindexing or batch processing. - In multi-tenant setups, walk each tenant's full set for inventory/reconciliation. ⚠️ Caveats - Result ordering is not guaranteed; do not build order-dependent logic on it. - The cursor is built for systematic full-collection access, not random queries. - include_vector=True increases data transfer for the vectors; enable it only when needed. - You cannot iterate all tenants at once; run the iterator per tenant in multi-tenant collections. #Weaviate# #VectorDatabase#
Show more
# Weaviate Features and Practical Usage 🚀 Ingesting data is just the start. From partial updates to conditional bulk deletes to existence checks, Weaviate's object management API covers the full CRUD you need to run a real sync pipeline. 📌 Title and Feature URL Title: Manage objects URL: 📝 Overview Weaviate provides fundamental CRUD operations on objects within a collection: create, read, update (partial or full replacement), and delete. These are organized under the Python client's accessor, and the ability to choose between partial update and full replacement is central to operational design. 🔧 How It Works The key methods are: - insert: add a single object; you can also pass uuid, vector, and references. - insert_many: add multiple objects at once. - update: a partial update that modifies only the specified properties while preserving the rest. - replace: overwrites the entire object with new data. - delete_by_id: deletes a single object by UUID. - delete_many: deletes multiple objects matching a filter. - exists: checks whether an object is present. When you modify properties configured for vectorization, Weaviate automatically regenerates the embeddings transparently during the update. 🛠 Practical Usage - Partial update: properties={"title": "Updated"}) - Full replacement: properties={"title": "New", "body": "Complete"}) - Conditional bulk delete: "brand").equal("OldBrand")) - For reproducible IDs, use generate_uuid5() from weaviate.util so the same input always yields the same UUID, preventing duplicate IDs on re-import. - delete_many supports dry_run (preview matches without deleting) and verbose for detailed output. 🎯 Use Cases - For product master sync, apply only changed fields (price, description) via update's partial update. - Purge a discontinued brand with delete_many(where=...) conditional bulk delete. - Assign stable IDs with generate_uuid5 to prevent duplicate inserts in a daily sync. - Confirm the target count with dry_run before running a production delete. ⚠️ Caveats - Updating a vectorized property triggers automatic re-vectorization and incurs embedding cost; factor "updating the description = embedding cost" into your sync design. - update is partial, replace is full; properties omitted from a replace are dropped, so don't confuse the two. - delete_many is bounded by a QUERY_MAXIMUM_RESULTS limit to prevent resource exhaustion; large deletes must be batched. - Deletes are generally irreversible; make dry_run previews a habit. #Weaviate# #VectorDatabase#
Show more
# Weaviate Features and Practical Usage 🚀 Give a single object several meaning spaces at once: one for the title, one for the body, one for the image. Named vectors are the core design pattern for multimodal and purpose-specific search within a single collection. 📌 Title and Feature URL Title: Named vectors (collection definition) URL: 📝 Overview Named vectors let a single object hold multiple vector embeddings simultaneously. Each vector can have its own source properties, vectorizer, index, and compression algorithm, so it behaves as an independent vector space. This lets you switch which vector you search against depending on the use case. 🔧 How It Works - Each named vector can use its own vectorizer (e.g. text2vec-openai, text2vec-cohere). - source_properties controls which object properties feed a given vector (e.g. only title, or only body). - Each named vector has its own index type (hnsw / flat / dynamic) and config, so each space can be optimized independently. - As the docs put it: "Each vector space can set its own index, its own compression algorithm, and its own vectorizer." - The name "default" is reserved for single-vector collections created without explicit vector configuration. 🛠 Practical Usage In the Python client, pass an array to vector_config to define multiple vectors. - Definition: vector_config=[Configure.Vectors.text2vec_openai(name="title", source_properties=["title"]), Configure.Vectors.text2vec_openai(name="body", source_properties=["body"])] - At query time, choose the vector with target_vector. Example: collection.query.near_text(query="AI applications", target_vector="body"). - When supplying your own vectors during batch import, pass a dict keyed by vector name: batch.add_object(properties=row, vector={"title": title_vec, "body": body_vec}). - New named vectors can be added after collection creation. 🎯 Use Cases - Give articles a title vector and a body vector to power "related articles by headline similarity" and "search by body meaning" separately. - In e-commerce, keep a product-image vector and a description vector together for image similarity and text semantic search on the same object. - For multilingual content, maintain language-specific vectors to improve per-language retrieval. - Embed document sections with specialized models for domain-specific search. ⚠️ Caveats - The vectorizer, index type, and source property definitions cannot be changed after collection creation (adding new vectors is allowed). - You cannot combine named vectors (vector_config) with top-level vectorizer / vectorIndexType in the same collection. - More vectors mean more embedding cost and more storage/memory; define only what you actually need. - Queries must specify target_vector; forgetting it is a common mistake. #Weaviate# #Embeddings#
Show more
# Weaviate Features and Practical Usage 🚀 Tired of standing up a vector DB server just for a test? Embedded Weaviate launches from your script in one line and disappears when you're done, making it a perfect throwaway DB for CI and notebooks. 📌 Title and Feature URL Title: Embedded Weaviate URL: 📝 Overview Embedded Weaviate is an experimental deployment model that runs a Weaviate instance from your application code rather than a standalone server. The instance lifecycle is tied to the client app, so it terminates when your app exits, though persisted data survives. Its biggest benefit is running experiments with zero infrastructure setup. 🔧 How It Works - In Python you launch it with weaviate.connect_to_embedded(version=..., headers=..., environment_variables=...). - The client checks binary_path for a cached binary; if missing, it downloads the right binary (Linux or macOS) from GitHub releases and caches it for reuse. - On first startup it creates a persistent datastore at persistence_data_path, and subsequent runs reuse it, so data survives between sessions. - The instance exits when the script ends, the app terminates, or the notebook becomes inactive. 🛠 Practical Usage - Key parameters are version (latest, a version string, or a binary URL), port (default 8079), persistence_data_path (default ~/.local/share/weaviate), and binary_path (default ~/.cache/weaviate-embedded). - For advanced setup use EmbeddedOptions and pass modules or API keys via additional_env_vars={"ENABLE_MODULES": "..."}, then call client.connect(). - If logs are noisy, quiet them with environment_variables={"LOG_LEVEL": "error"}. - TypeScript requires a separate package, weaviate-ts-embedded. 🎯 Use Cases - Running regression tests for search logic in CI with zero infrastructure setup. - Prototyping and experimentation in Jupyter notebooks. - Lightweight, single-user local validation. ⚠️ Caveats - It is experimental; APIs and parameters may change. - It is single-node only, with no clustering or distributed deployment, and is not production-grade. - Supported operating systems are Linux and macOS only. - Avoid changing XDG_DATA_HOME or XDG_CACHE_HOME, since they are widely used by other applications. #Weaviate# #VectorDatabase#
Show more
🎨 Every studio has a "final_final_v7.png." It's often faster to remake old work than to find it, and AI helps with that from an unexpected angle. In creative work, assets pile up faster than anyone can organize them. The catch is that keyword search fails: search "blue environmental concept" and you get nothing if the file is named ENV_ALTSTYLING_DARK_V4. The words and the filenames simply don't share a vocabulary. So flip the approach. Convert images and footage into vector embeddings that represent meaning as numbers. Now "things that mean something similar, however differently phrased, sit close together in vector space," so you can search in natural language. Built on Weaviate, hybrid search combines vector proximity with metadata filters (project, date, type) to land on the right asset. Search tens of thousands of concept images for "a cold, forested biome that feels visually distinct," pull B-roll by shot characteristics, dig up an old drum texture, all without knowing the naming convention. Here, AI isn't the star that generates new content; it's the infrastructure layer that makes existing work accessible, returning to creation the hours lost to organizing and searching. Building Foundry: AI isn't replacing creativity, it's removing friction makes the case for that quiet but essential value. 🔗 #VectorSearch# #CreativeAI#
Show more
Practices for embedding AI agents into enterprise systems [Layered Memory -- 4-Tier Memory & Context Broker] 💡 An AI agent that starts from scratch every session is like a new hire who asks the same questions every day. Separate memory into four layers and dynamically assemble "only what's needed right now" -- that's what makes an agent production-ready. 🔥 Problems Solved - Context loss across sessions: context vanishes between sessions and agents, forcing repeated work - Finite context window: stuffing full history into the window degrades both cost and accuracy - Memory bloat: unlimited accumulation increases cost, privacy risk, and context pollution - Lost in the middle: injecting too much context actually reduces answer accuracy 🏗️ Proposed Pattern Separate memory into four tiers: Working (current session, ephemeral), Episodic (past summaries, per-user), Semantic (RAG-indexed knowledge), and Organizational (people, teams, relationships as a knowledge graph). Assign each tier its own storage, TTL, and ACL. A Context Broker retrieves from relevant tiers based on user intent, then prioritizes, summarizes, and compresses within a token budget -- assembling context from only the most relevant information. ✅ Selection Criteria - When to use: agents providing continuous support across sessions and agent boundaries - When NOT: one-shot stateless tasks; use cases where a small, fixed context is sufficient ⚠️ Pitfalls - Episodic memory bloat: store summaries (not raw logs) and control with importance scores, TTL, and time-decay - Context broker quality: poor reranking lets irrelevant information slip through, degrading accuracy - Cross-layer ACL consistency: when layers have different ACLs, aggregation must reduce to the strictest permission 🛠️ Implementation Approach 1. Deploy a vector DB (Pinecone / Weaviate / pgvector) for the semantic memory tier and Neo4j for the organizational knowledge graph tier, configuring storage, TTL, and ACLs per tier 2. Build a summarization pipeline for episodic memory -- store summaries instead of raw logs and implement automatic forgetting via importance scores and time-decay 3. Implement the Context Broker with reranking (Cohere Rerank / cross-encoder) to dynamically assemble the most relevant information within a token budget (target ~8,000 tokens) based on user intent 4. Leverage memory management frameworks (Mem0 / Zep) for cross-session and cross-agent context persistence 5. Tag each memory tier with ACL metadata and integrate with the Context Firewall (P10) to reduce permissions to the strictest level at aggregation time #AIAgents# #EnterpriseArchitecture#
Show more