What is Weaviate? Uses, querying, bulk import, client, examples, vs Pinecone and Qdrant

What Weaviate is and why use it, whether it is a graph database, querying and fields, bulk queries, the client, examples, and Pinecone vs Qdrant.

Walking a room through the products he has shipped
Walking a room through the products he has shipped

Key takeaways

  • Weaviate is an open-source Go vector database with vectorizer, hybrid and generative modules.
  • It is not a graph database; cross-references give simple links, not graph traversal.
  • Query with near_text, bm25, hybrid, near_vector or fetch_objects, adding filters and returned properties.
  • Batch import, iterators and filtered fetches handle bulk operations efficiently.
  • Choose Pinecone for fully managed simplicity, Weaviate for built-in modules, Qdrant for filtering and efficiency.

Weaviate is an open-source vector database that stores data objects with their embeddings and supports semantic, keyword and hybrid search, with built-in modules that can create embeddings and run generative RAG queries. It is used for semantic search, RAG and recommendations. I build retrieval systems such as RAG.NextUpgrad, so this page explains what Weaviate is, why to use it, whether it is a graph database, how to query it, bulk operations, its client, examples, and how it compares with Pinecone and Qdrant.

What is the Weaviate database?

Weaviate is an open-source vector database written in Go. It stores objects, such as documents or products, with properties and vectors in collections, and searches them by meaning using approximate nearest neighbour indexes, alongside keyword and filtered search.

Also asked as: what is weaviate database

Its distinctive features include vectorizer modules that call embedding models automatically during import and queries, hybrid search that blends BM25 and vector scores, generative search that sends results to a language model, multi-tenancy for SaaS apps, and named vectors for storing several embeddings per object. You can self-host it with Docker or Kubernetes, or use the managed Weaviate Cloud. The company behind it is based in the Netherlands, and the core is open source.

What is Weaviate used for?

Weaviate is used for semantic search over documents and products, retrieval-augmented generation, recommendation systems, question answering, image and multimodal search, and classification, anywhere similarity between embeddings matters.

In a RAG application, you import document chunks into a collection, let a vectorizer module or your own code create embeddings, then run hybrid queries with filters such as source or date to fetch context for a language model. E-commerce teams use it to search products by meaning, such as a query for comfortable shoes for long walks. Multimodal modules let text queries find images. Its generative search can even run the RAG step inside the query itself.

Why use Weaviate?

Choose Weaviate when you want an open-source vector database with strong built-in features: integrated vectorization, native hybrid search, generative modules, multi-tenancy and flexible deployment from local Docker to managed cloud, with clients in several languages.

Its modules reduce glue code: you can insert raw text and let Weaviate call your chosen embedding provider, including local models through Ollama. Hybrid search with a tunable alpha makes it easy to balance keyword and semantic matching. The trade-offs are higher memory use than some alternatives and more configuration to learn. For a simple prototype, Chroma may be quicker; for very large filtered workloads, compare against Qdrant or Milvus on your own data before deciding.

Is Weaviate a graph database?

No, not in the usual sense. Weaviate is a vector database. Its name and early design included a GraphQL API and cross-references between objects, which gave it graph-like links, but it does not offer graph traversal queries like Neo4j.

Cross-references let an object point to others, such as an article referencing its author, and queries can return referenced properties. That is useful for modelling simple relationships, but deep multi-hop traversals and graph algorithms belong in a dedicated graph database. If your RAG system needs entity relationships, consider pairing Weaviate with a graph database or a GraphRAG index. Newer Weaviate clients use gRPC and REST, with GraphQL still available for some queries.

How do you query Weaviate?

With the v4 Python client, get a collection and call a query method: near_text for semantic search, bm25 for keyword search, hybrid for both, near_vector with your own vector, or fetch_objects for filtered retrieval without similarity.

Also asked as: how to query weaviate

For example, articles.query.hybrid(query="solar subsidies", alpha=0.5, limit=5) returns the five best matches blending keyword and vector scores. Add filters=Filter.by_property("year").greater_than(2022) to restrict results, and return_metadata=MetadataQuery(score=True) to inspect scores. For generative RAG, use the generate namespace with a prompt that includes the retrieved objects. Use near_text only if the collection has a vectorizer configured; otherwise pass vectors yourself. Results come back as objects with properties and metadata you can loop over.

What property or field is used when querying in Weaviate?

Semantic queries search the object's vector, which was created from the properties the vectorizer was configured to include. Keyword and hybrid queries search text properties, and you can restrict them with query_properties, optionally boosting fields like title^2.

Also asked as: what property/field is used when querying in weaviate

Filters use Filter.by_property("name") with operators such as equal, greater_than or contains_any, and need the property to be indexed for filtering, which is on by default for most types. Use return_properties to choose which fields come back, which reduces payload size. If semantic results seem off, check which properties were vectorized: including irrelevant fields, such as IDs or long boilerplate, can blur embeddings. Configure this per property in the collection's schema when you create it.

Does Weaviate support bulk queries?

Yes, in several forms. Batch import inserts many objects efficiently, the iterator reads every object in a collection, fetch_objects with filters returns many objects at once, and multiple searches can run concurrently from the async client.

Also asked as: does weaviate support bulk query

For imports, use with collection.batch.dynamic() as batch: and call batch.add_object() in a loop; the client groups requests and handles retries, and you should check collection.batch.failed_objects afterwards. For exporting or processing everything, use collection.iterator(), which pages through results with a cursor. Batch deletes accept a filter, such as deleting all objects from one source. For many independent searches, send them concurrently with the async client rather than one by one.

What is the Weaviate client?

The Weaviate client is the official library for connecting to a Weaviate instance from code. Official clients exist for Python, TypeScript and JavaScript, Go and Java, with the Python v4 client using gRPC for faster operations.

Also asked as: what is weaviate client

Connect with helpers such as weaviate.connect_to_local(), connect_to_weaviate_cloud() with a URL and API key, or connect_to_embedded(), which downloads and runs Weaviate inside your Python process for experiments. With the embedded client, the server starts when you connect and stops when your script ends, so keep the script running while you query. Always close the client with client.close() or a context manager, and keep client and server versions compatible.

What are some Weaviate examples?

Weaviate's recipes repository on GitHub has many runnable notebooks: semantic and hybrid search, RAG with various model providers, multi-tenancy, multimodal search, reranking and integrations with LangChain and LlamaIndex. The OpenAI Cookbook also includes Weaviate examples.

A simple example: run Weaviate in Docker with an Ollama vectorizer, create a collection called Notes with title and body properties, batch import your notes, then run hybrid queries. Next, add generative search so Weaviate passes the top notes to a language model and returns an answer. From there, explore filters by date, named vectors for titles and bodies, and evaluating retrieval quality with a small labelled question set.

Pinecone vs Weaviate vs Qdrant: how do you choose?

Pinecone is fully managed and serverless, ideal when you want no infrastructure work. Weaviate is open source with built-in vectorization, hybrid and generative modules. Qdrant is open source, written in Rust, with strong filtering, quantization and efficient resource use.

Also asked as: vector database selection: pinecone vs weaviate vs qdrant

Decide on hosting first: if you must self-host or keep data in your own environment, choose Weaviate or Qdrant; if you prefer a managed service, all three offer cloud options, with Pinecone being cloud only. Then compare the features you need, such as hybrid search, multi-tenancy and filtering, and test recall, latency, memory and cost on your own data with realistic filters. Keep retrieval behind a small interface in your code, so switching later is a contained change.

Sources

  1. Weaviate, Documentationweaviate.io
  2. Weaviate, repositorygithub.com
  3. Weaviate, recipes repositorygithub.com
  4. Weaviate, Python clientweaviate.io
  5. OpenAI Cookbookcookbook.openai.com
  6. Pinecone, Documentationdocs.pinecone.io
Pranjul Rathour
Pranjul Rathour
GenAI Engineer · India

GenAI engineer and AI product builder with 2+ years shipping production-grade AI systems: RAG pipelines, fine-tuned LLMs, hybrid retrieval and multi-modal apps across vision, speech and OCR, architected end to end from ingestion to deployment. Leads engineering for SCULT INDIA's 14-member team, founded the 500+ member TechVerse Enclave community and has mentored 200+ students. Three hackathon first prizes: Changethon 2025 (IIT Roorkee), Product Genesis at Vividhotsava 2025 (CSJMU) and BYTEBATTLE (MeetKats).

Open to GenAI roles, hackathon judging, mentorship sessions and guest talks at colleges. For campus sessions the inviting institution covers the visit end to end: travel (a First AC train ticket for journeys up to five hours, a flight for anything longer), accommodation, meals, and pickup and drop; the honorarium and workshop fees are negotiable on WhatsApp or on the call, and requests are welcome from institutions that can cover the visit this way. Email pranjulrathour41@gmail.com.

Keep reading

More on RAG & retrieval

All RAG & retrieval guides →
Campus talks · hackathon judging · mentoring

Want this as a live session at your college?

Open to GenAI roles, hackathon judging, mentorship sessions and guest talks at colleges. For campus sessions the inviting institution covers the visit end to end: travel (a First AC train ticket for journeys up to five hours, a flight for anything longer), accommodation, meals, and pickup and drop; the honorarium and workshop fees are negotiable on WhatsApp or on the call, and requests are welcome from institutions that can cover the visit this way.

Pranjul Rathour, GenAI engineer in India