mirror of
https://github.com/qdrant/landing_page.git
synced 2026-10-03 01:48:32 +02:00
docs: Fixed broken links (#1464)
Signed-off-by: Anush008 <anushshetty90@gmail.com>
This commit is contained in:
@@ -215,7 +215,6 @@ If you're working with OpenAI or Cohere embeddings, we recommend the following o
|
||||
|OpenAI text-embedding-3-large|3072|[DBpedia 1M](https://huggingface.co/datasets/Qdrant/dbpedia-entities-openai3-text-embedding-3-large-3072-1M) | 0.9966|3x|
|
||||
|OpenAI text-embedding-3-small|1536|[DBpedia 100K](https://huggingface.co/datasets/Qdrant/dbpedia-entities-openai3-text-embedding-3-small-1536-100K)| 0.9847|3x|
|
||||
|OpenAI text-embedding-3-large|1536|[DBpedia 1M](https://huggingface.co/datasets/Qdrant/dbpedia-entities-openai3-text-embedding-3-large-1536-1M)| 0.9826|3x|
|
||||
|Cohere AI embed-english-v2.0|4096|[Wikipedia](https://huggingface.co/datasets/nreimers/wikipedia-22-12-large/tree/main) 1M|0.98|2x|
|
||||
|OpenAI text-embedding-ada-002|1536|[DbPedia 1M](https://huggingface.co/datasets/KShivendu/dbpedia-entities-openai-1M) |0.98|4x|
|
||||
|Gemini|768|No Open Data| 0.9563|3x|
|
||||
|Mistral Embed|768|No Open Data| 0.9445 |3x|
|
||||
|
||||
@@ -16,8 +16,6 @@ category: practicle-examples
|
||||
|
||||
Do you want to insert a semantic search function into your website or online app? Now you can do so - without spending any money! In this example, you will learn how to create a free prototype search engine for your own non-commercial purposes.
|
||||
|
||||
You may find all of the assets for this tutorial on [GitHub](https://github.com/qdrant/examples/tree/master/lambda-search).
|
||||
|
||||
## Ingredients
|
||||
|
||||
* A [Rust](https://rust-lang.org) toolchain
|
||||
@@ -244,7 +242,7 @@ fn setup<'i>(
|
||||
}
|
||||
```
|
||||
|
||||
Depending on whether you want to efficiently filter the data, you can also add some indexes. I'm leaving this out for brevity, but you can look at the [example code](https://github.com/qdrant/examples/tree/master/lambda-search) containing this operation. Also this does not implement chunking (splitting the data to upsert in multiple requests, which avoids timeout errors).
|
||||
Depending on whether you want to efficiently filter the data, you can also add some indexes. I'm leaving this out for brevity. Also this does not implement chunking (splitting the data to upsert in multiple requests, which avoids timeout errors).
|
||||
|
||||
Add a suitable `main` method and you can run this code to insert the points (or just use the binary from the example). Be sure to include the port in the `qdrant_url`.
|
||||
|
||||
@@ -274,7 +272,7 @@ You can also filter by adding a `filter: ...` field to the `SearchPoints`, and y
|
||||
|
||||
## Putting it all together
|
||||
|
||||
Now that you have all the parts, it's time to join them up. Now copying and wiring up the snippets above is left as an exercise to the reader. Impatient minds can peruse the [example repo](https://github.com/qdrant/examples/tree/master/lambda-search) instead.
|
||||
Now that you have all the parts, it's time to join them up. Now copying and wiring up the snippets above is left as an exercise to the reader.
|
||||
|
||||
You'll want to extend the `main` method a bit to connect with the Client once at the start, also get API keys from the environment so you don't need to compile them into the code. To do that, you can get them with `std::env::var(_)` from the rust code and set the environment from the AWS console.
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ DSPy treats the LM like a device and abstracts out the underlying complexities o
|
||||
|
||||
### **Signatures**
|
||||
|
||||
[Signatures](https://dspy-docs.vercel.app/docs/building-blocks/signatures) replace handwritten prompts and are written in natural language. They are simply declarations or specs of the behavior that you expect from the language model. Some examples are:
|
||||
[Signatures](https://dspy.ai/learn/programming/signatures/) replace handwritten prompts and are written in natural language. They are simply declarations or specs of the behavior that you expect from the language model. Some examples are:
|
||||
|
||||
- question -> answer
|
||||
- long_document -> summary
|
||||
@@ -156,17 +156,17 @@ DSPy Signatures can be specified in two ways:
|
||||
|
||||
### **Modules**
|
||||
|
||||
Modules take signatures as input, and automatically generate high-quality prompts. Inspired heavily from PyTorch, DSPy [modules](https://dspy-docs.vercel.app/docs/building-blocks/modules) eliminate the need for crafting prompts manually.
|
||||
Modules take signatures as input, and automatically generate high-quality prompts. Inspired heavily from PyTorch, DSPy [modules](https://dspy.ai/learn/programming/modules/) eliminate the need for crafting prompts manually.
|
||||
|
||||
The framework supports advanced modules like [dspy.ChainOfThought](https://dspy-docs.vercel.app/api/modules/ChainOfThought), which adds step-by-step rationalization before producing an output. The output not only provides answers but also rationales. Other modules include [dspy.ProgramOfThought](https://dspy-docs.vercel.app/api/modules/ProgramOfThought), which outputs code whose execution results dictate the response, and [dspy.ReAct](https://dspy-docs.vercel.app/api/modules/ReAct), an agent that uses tools to implement signatures.
|
||||
|
||||
DSPy also offers modules like [dspy.MultiChainComparison](https://dspy-docs.vercel.app/api/modules/MultiChainComparison), which can compare multiple outputs from dspy.ChainOfThought in order to produce a final prediction. There are also utility modules like [dspy.majority](https://dspy-docs.vercel.app/docs/building-blocks/modules#what-other-dspy-modules-are-there-how-can-i-use-them) for aggregating responses through voting.
|
||||
DSPy also offers modules like [dspy.MultiChainComparison](https://dspy-docs.vercel.app/api/modules/MultiChainComparison), which can compare multiple outputs from dspy.ChainOfThought in order to produce a final prediction. There are also utility modules like [dspy.majority](https://dspy.ai/learn/programming/modules/?h=modul#what-other-dspy-modules-are-there-how-can-i-use-them) for aggregating responses through voting.
|
||||
|
||||
Modules can be composed into larger programs, and you can compose multiple modules into bigger modules. This allows you to create complex, behavior-rich applications using language models.
|
||||
|
||||
### **Optimizers**
|
||||
|
||||
[Optimizers](https://dspy-docs.vercel.app/docs/building-blocks/optimizers) take a set of modules that have been connected to create a pipeline, compile them into auto-optimized prompts, and maximize an outcome metric.
|
||||
[Optimizers](https://dspy.ai/learn/optimization/optimizers/) take a set of modules that have been connected to create a pipeline, compile them into auto-optimized prompts, and maximize an outcome metric.
|
||||
|
||||
Essentially, optimizers are designed to generate, test, and refine prompts, and ensure that the final prompt is highly optimized for the specific dataset and task at hand. Using optimizers in the DSPy framework significantly simplifies the process of developing and refining LM applications by automating the prompt engineering process.
|
||||
|
||||
@@ -212,7 +212,7 @@ print(response.answer)
|
||||
|
||||
```
|
||||
|
||||
You are not restricted to using one LLM in your program; you can use [multiple](https://dspy-docs.vercel.app/docs/building-blocks/language_models#using-multiple-lms-at-once). DSPy can be used with both managed models such as OpenAI, Cohere, Anyscale, Together, or PremAI as well as with local LLM deployments through vLLM, Ollama, or TGI server. All LLM calls are cached by default.
|
||||
You are not restricted to using one LLM in your program; you can use [multiple](https://dspy.ai/learn/programming/language_models/?h=language#using-multiple-lms). DSPy can be used with both managed models such as OpenAI, Cohere, Anyscale, Together, or PremAI as well as with local LLM deployments through vLLM, Ollama, or TGI server. All LLM calls are cached by default.
|
||||
|
||||
**Vector Store Integration (Retrieval Model)**
|
||||
|
||||
@@ -270,7 +270,7 @@ Using DSPy optimizers involves the following steps:
|
||||
5. Run the optimizer with the DSPy program, metric function, and training inputs. DSPy will compile the program and automatically adjust parameters and improve performance.
|
||||
6. Use the compiled program to perform the task. Iterate and adapt if required.
|
||||
|
||||
To learn more about optimizing DSPy programs, read [this](https://dspy-docs.vercel.app/docs/building-blocks/optimizers).
|
||||
To learn more about optimizing DSPy programs, read [this](https://dspy.ai/learn/optimization/optimizers/).
|
||||
|
||||
DSPy is heavily influenced by PyTorch, and replaces complex prompting with reusable modules for common tasks. Instead of crafting specific prompts, you write code that DSPy automatically translates for the LLM. This, along with built-in optimizers, makes working with LLMs more systematic and efficient.
|
||||
|
||||
@@ -400,4 +400,4 @@ LangChain and DSPy both offer unique capabilities and can help you build powerfu
|
||||
|
||||
[https://python.langchain.com/v0.1/docs/get_started/introduction](https://python.langchain.com/v0.1/docs/get_started/introduction)
|
||||
|
||||
[https://dspy-docs.vercel.app/docs/intro](https://dspy-docs.vercel.app/docs/intro)
|
||||
[DSPy Introduction](https://dspy.ai/)
|
||||
|
||||
@@ -57,7 +57,7 @@ To simplify the evaluation process, several powerful frameworks are available. B
|
||||
|
||||
### Ragas: Testing RAG with questions and answers
|
||||
|
||||
[Ragas](https://docs.ragas.io/en/v0.0.17/index.html) (or RAG Assessment) uses a dataset of questions, ideal answers, and relevant context to compare a RAG system's generated answers with the ground truth. It provides metrics like faithfulness, relevance, and semantic similarity to assess retrieval and answer quality.
|
||||
[Ragas](https://docs.ragas.io/en/stable/) (or RAG Assessment) uses a dataset of questions, ideal answers, and relevant context to compare a RAG system's generated answers with the ground truth. It provides metrics like faithfulness, relevance, and semantic similarity to assess retrieval and answer quality.
|
||||
|
||||
**Figure 1:** *Output of the Ragas framework, showcasing metrics like faithfulness, answer relevancy, context recall, precision, relevancy, entity recall, and answer similarity. These are used to evaluate the quality of RAG system responses.*
|
||||
|
||||
@@ -175,7 +175,7 @@ First, create question and ground-truth answer pairs from source documents for t
|
||||
|
||||
- **Hand-crafting your dataset:** Manually create questions and answers.
|
||||
- **Use LLM to create synthetic data:** Leverage LLMs like [T5](https://huggingface.co/docs/transformers/en/model_doc/t5) or OpenAI APIs.
|
||||
- **Use the Ragas framework**: [This method](https://docs.ragas.io/en/latest/getstarted/testset_generation.html) uses an LLM to generate various question types for evaluating RAG systems.
|
||||
- **Use the Ragas framework**: [This method](https://docs.ragas.io/en/stable/concepts/test_data_generation/) uses an LLM to generate various question types for evaluating RAG systems.
|
||||
- **Use FiddleCube**: [FiddleCube](https://www.fiddlecube.ai/) is a system that can help generate a range of question types aimed at different aspects of the testing process.
|
||||
|
||||
Once you have created a dataset, collect the retrieved context and the final answer generated by your RAG pipeline for each question.
|
||||
|
||||
@@ -1295,7 +1295,7 @@ To get the facet counts for a field, you can use the following:
|
||||
|
||||
<aside role="status">By default, the number of <code>hits</code> returned is limited to 10. To change this, use the <code>limit</code> parameter. Keep this in mind when checking the number of unique values a payload field contains.</aside>
|
||||
|
||||
REST API ([Facet](https://api.qdrant.tech/api-reference/search/facet))
|
||||
REST API ([Facet](https://api.qdrant.tech/v-1-13-x/api-reference/points/facet))
|
||||
|
||||
```http
|
||||
POST /collections/{collection_name}/facet
|
||||
|
||||
@@ -87,4 +87,4 @@ QdrantIngestOperator(
|
||||
## Reference
|
||||
- 📦 [Provider package PyPI](https://pypi.org/project/apache-airflow-providers-qdrant/)
|
||||
- 📚 [Provider docs](https://airflow.apache.org/docs/apache-airflow-providers-qdrant/stable/index.html)
|
||||
- 📄 [Source Code](https://github.com/apache/airflow/tree/main/airflow/providers/qdrant)
|
||||
- 📄 [Source Code](https://github.com/apache/airflow/tree/main/providers/qdrant)
|
||||
|
||||
@@ -97,4 +97,4 @@ if __name__ == "__main__":
|
||||
|
||||
- Unstructured API [reference](https://unstructured-io.github.io/unstructured/api.html).
|
||||
- Qdrant ingestion destination [reference](https://unstructured-io.github.io/unstructured/ingest/destination_connectors/qdrant.html).
|
||||
- [Source Code](https://github.com/Unstructured-IO/unstructured/blob/main/unstructured/ingest/connector/qdrant.py)
|
||||
- [Source Code](https://github.com/Unstructured-IO/unstructured-ingest/blob/main/unstructured_ingest/connector/qdrant.py)
|
||||
|
||||
@@ -88,9 +88,3 @@ method call.
|
||||
<aside role="status">
|
||||
Asynchronous client was introduced in <code>qdrant-client</code> version 1.6.1. If you are using an older version, you need to use autogenerated async clients directly.
|
||||
</aside>
|
||||
|
||||
## Supported Python libraries
|
||||
|
||||
Qdrant integrates with numerous Python libraries. Until recently, only [Langchain](https://python.langchain.com) provided async Python API support.
|
||||
Qdrant is the only vector database with full coverage of async API in Langchain. Their documentation [describes how to use
|
||||
it](https://python.langchain.com/docs/modules/data_connection/vectorstores/#asynchronous-operations).
|
||||
|
||||
@@ -24,7 +24,7 @@ the documents used to generate the response.
|
||||
*Source: https://docs.cohere.com/docs/retrieval-augmented-generation-rag*
|
||||
|
||||
The connectors have to implement a specific interface and expose the data source as HTTP REST API. Cohere documentation
|
||||
[describes a general process of creating a connector](https://docs.cohere.com/docs/creating-and-deploying-a-connector).
|
||||
[describes a general process of creating a connector](https://docs.cohere.com/v1/docs/creating-and-deploying-a-connector).
|
||||
This tutorial guides you step by step on building such a service around Qdrant.
|
||||
|
||||
## Qdrant connector
|
||||
@@ -153,7 +153,7 @@ class SearchQuery(BaseModel):
|
||||
query: str
|
||||
```
|
||||
|
||||
RAG connector does not have to return the documents in any specific format. There are [some good practices to follow](https://docs.cohere.com/docs/creating-and-deploying-a-connector#configure-the-connection-between-the-connector-and-the-chat-api),
|
||||
RAG connector does not have to return the documents in any specific format. There are [some good practices to follow](https://docs.cohere.com/v1/docs/creating-and-deploying-a-connector#configure-the-connection-between-the-connector-and-the-chat-api),
|
||||
but Cohere models are quite flexible here. Results just have to be returned as JSON, with a list of objects in a
|
||||
`results` property of the output. We will use the same document structure as we did for the Qdrant payloads, so there
|
||||
is no conversion required. That requires two additional models to be created.
|
||||
|
||||
@@ -8,14 +8,14 @@ aliases:
|
||||
|
||||
# Blog-Reading Chatbot with GPT-4o
|
||||
|
||||
| Time: 90 min | Level: Advanced |[GitHub](https://github.com/qdrant/examples/blob/master/langchain-lcel-rag/Langchain-LCEL-RAG-Demo.ipynb)| |
|
||||
| Time: 90 min | Level: Advanced |[GitHub](https://github.com/qdrant/examples/blob/langchain-lcel-rag/langchain-lcel-rag/Langchain-LCEL-RAG-Demo.ipynb)| |
|
||||
|--------------|-----------------|--|----|
|
||||
|
||||
In this tutorial, you will build a RAG system that combines blog content ingestion with the capabilities of semantic search. **OpenAI's GPT-4o LLM** is powerful, but scaling its use requires us to supply context systematically.
|
||||
|
||||
RAG enhances the LLM's generation of answers by retrieving relevant documents to aid the question-answering process. This setup showcases the integration of advanced search and AI language processing to improve information retrieval and generation tasks.
|
||||
|
||||
A notebook for this tutorial is available on [GitHub](https://github.com/qdrant/examples/blob/master/langchain-lcel-rag/Langchain-LCEL-RAG-Demo.ipynb).
|
||||
A notebook for this tutorial is available on [GitHub](https://github.com/qdrant/examples/blob/langchain-lcel-rag/langchain-lcel-rag/Langchain-LCEL-RAG-Demo.ipynb).
|
||||
|
||||
**Data Privacy and Sovereignty:** RAG applications often rely on sensitive or proprietary internal data. Running the entire stack within your own environment becomes crucial for maintaining control over this data. Qdrant Hybrid Cloud deployed on [Scaleway](https://www.scaleway.com/) addresses this need perfectly, offering a secure, scalable platform that still leverages the full potential of RAG. Scaleway offers serverless [Functions](https://www.scaleway.com/en/serverless-functions/) and serverless [Jobs](https://www.scaleway.com/en/serverless-jobs/), both of which are ideal for embedding creation in large-scale RAG cases.
|
||||
|
||||
|
||||
@@ -278,7 +278,7 @@ Output:
|
||||
The task was solved successfully, even without any optimization. However, each of the events has the "Event Name: "
|
||||
prefix that we might want to remove. DSPy allows optimizing the module, so we can improve the results. Optimization
|
||||
might be done in different ways, and it's [well covered in the DSPy
|
||||
documentation](https://dspy-docs.vercel.app/docs/building-blocks/optimizers).
|
||||
documentation](https://dspy.ai/learn/optimization/optimizers/).
|
||||
|
||||
We are not going to go through the optimization process in this tutorial. However, we encourage you to experiment with
|
||||
it, as it might significantly improve the performance of your pipeline.
|
||||
|
||||
+3
-3
@@ -27,10 +27,10 @@ Directory.
|
||||
> **Note:** In this tutorial, we are going to build a solid foundation for such a system. However, it is up to your organization's setup to implement the entire solution.
|
||||
|
||||
- **Dataset** - a collection of documents, using different formats, such as PDF or DOCx, scraped from internet
|
||||
- **Asymmetric semantic embeddings** - [Aleph Alpha embedding](https://docs.aleph-alpha.com/api/semantic-embed/) to
|
||||
- **Asymmetric semantic embeddings** - [Aleph Alpha embedding](https://docs.aleph-alpha.com/api/pharia-inference/semantic-embed/) to
|
||||
convert the queries and the documents into vectors
|
||||
- **Large Language Model** - the [Luminous-extended-control
|
||||
model](https://docs.aleph-alpha.com/docs/introduction/model-card/), but you can play with a different one from the
|
||||
model](https://docs.aleph-alpha.com/api/pharia-inference/available-models/), but you can play with a different one from the
|
||||
Luminous family
|
||||
- **Qdrant Hybrid Cloud** - a knowledge base to store the vectors and search over the documents
|
||||
- **STACKIT** - a [German business cloud](https://www.stackit.de) to run the Qdrant Hybrid Cloud and the application
|
||||
@@ -44,7 +44,7 @@ interacts with the system with some set of permissions, and can only access the
|
||||
|
||||
### Aleph Alpha account
|
||||
|
||||
Since you will be using Aleph Alpha's models, [sign up](https://app.aleph-alpha.com/signup) with their managed service and generate an API token in the [User Profile](https://app.aleph-alpha.com/profile). Once you have it ready, store it as an environment variable:
|
||||
Since you will be using Aleph Alpha's models, [sign up](https://aleph-alpha.com) with their managed service and obtain an API token. Once you have it ready, store it as an environment variable:
|
||||
|
||||
```shell
|
||||
export ALEPH_ALPHA_API_KEY="<your-token>"
|
||||
|
||||
+1
-2
@@ -97,8 +97,7 @@ os.environ["QDRANT_API_KEY"] = "your-api-key"
|
||||
### Airbyte Open Source
|
||||
|
||||
Airbyte is an open-source data integration platform that helps you replicate your data in your warehouses, lakes, and
|
||||
databases. You can install it on your infrastructure and use it to load the data into Qdrant. The installation process
|
||||
for AWS EC2 is described in the [official documentation](https://docs.airbyte.com/deploying-airbyte/on-aws-ec2).
|
||||
databases. You can install it on your infrastructure and use it to load the data into Qdrant. The installation process is described in the [official documentation](https://docs.airbyte.com/deploying-airbyte/).
|
||||
Please follow the instructions to set up your own instance.
|
||||
|
||||
#### Setting up the connection
|
||||
|
||||
@@ -35,7 +35,7 @@ online_store:
|
||||
write_batch_size: 100
|
||||
```
|
||||
|
||||
You can refer to the Feast [reference](https://rtd.feast.dev/en/master/index.html#) for the full list of configuration options.
|
||||
You can refer to the Feast [documentation](https://docs.feast.dev/reference/alpha-vector-database#configuration-and-installation) for the full list of configuration options.
|
||||
|
||||
## Retrieving Documents
|
||||
|
||||
@@ -58,6 +58,5 @@ feature_values = feature_store.retrieve_online_documents(
|
||||
|
||||
## 📚 Further Reading
|
||||
|
||||
- [Feast Docs](http://docs.feast.dev/)
|
||||
- [Feast Reference](https://rtd.feast.dev/en/master/index.html/)
|
||||
- [Feast Documentation](http://docs.feast.dev/)
|
||||
- [Source](https://github.com/feast-dev/feast/tree/master/sdk/python/feast/infra/online_stores/)
|
||||
|
||||
@@ -92,4 +92,4 @@ agent.train(queries=[query], codes=[response])
|
||||
|
||||
- [Getting Started with Pandas-AI](https://pandasai-docs.readthedocs.io/en/latest/getting-started/)
|
||||
- [Pandas-AI Reference](https://pandasai-docs.readthedocs.io/en/latest/)
|
||||
- [Source Code](https://github.com/Sinaptik-AI/pandas-ai/blob/main/pandasai/ee/vectorstores/qdrant.py)
|
||||
- [Source Code](https://github.com/sinaptik-ai/pandas-ai/tree/main/extensions/ee/vectorstores/qdrant)
|
||||
|
||||
@@ -59,7 +59,7 @@ However, binary quantization is only efficient for high-dimensional vectors and
|
||||
At the moment, binary quantization shows good accuracy results with the following models:
|
||||
|
||||
- OpenAI `text-embedding-ada-002` - 1536d tested with [dbpedia dataset](https://huggingface.co/datasets/KShivendu/dbpedia-entities-openai-1M) achieving 0.98 recall@100 with 4x oversampling
|
||||
- Cohere AI `embed-english-v2.0` - 4096d tested on [wikipedia embeddings](https://huggingface.co/datasets/nreimers/wikipedia-22-12-large/tree/main) - 0.98 recall@50 with 2x oversampling
|
||||
- Cohere AI `embed-english-v2.0` - 4096d tested on Wikipedia embeddings - 0.98 recall@50 with 2x oversampling
|
||||
|
||||
Models with a lower dimensionality or a different distribution of vector components may require additional experiments to find the optimal quantization parameters.
|
||||
|
||||
|
||||
@@ -37,10 +37,6 @@ First, install the required libraries `qdrant-client` and `llama-index-embedding
|
||||
pip install qdrant-client llama-index-embeddings-huggingface
|
||||
```
|
||||
|
||||
<aside role="status">
|
||||
The code for this tutorial can be found <a href="https://github.com/qdrant/examples/multimodal-search">here</a>.
|
||||
</aside>
|
||||
|
||||
## Dataset
|
||||
|
||||
To make the demonstration simple, we created a tiny dataset of images and their captions for you.
|
||||
|
||||
@@ -11,7 +11,7 @@ Qdrant is supported as a vectorstore in DocsGPT to ingest and semantically retri
|
||||
|
||||
## Configuration
|
||||
|
||||
Learn how to setup DocsGPT in their [Quickstart guide](https://docs.docsgpt.co.uk/Deploying/Quickstart).
|
||||
Learn how to setup DocsGPT in their [Quickstart guide](https://docs.docsgpt.cloud/quickstart).
|
||||
|
||||
You can configure DocsGPT with environment variables in a `.env` file.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user