mirror of
https://github.com/qdrant/landing_page.git
synced 2026-09-28 23:48:31 +02:00
docs: Added Semantic Router integration (#733)
* docs: Semantic Router * docs: spark.md shard_key_selector option
This commit is contained in:
@@ -0,0 +1,105 @@
|
|||||||
|
---
|
||||||
|
title: Semantic-Router
|
||||||
|
weight: 2700
|
||||||
|
---
|
||||||
|
|
||||||
|
# Semantic-Router
|
||||||
|
|
||||||
|
[Semantic-Router](https://www.aurelio.ai/semantic-router/) is a library to build decision-making layers for your LLMs and agents. It uses vector embeddings to make tool-use decisions rather than LLM generations, routing our requests using semantic meaning.
|
||||||
|
|
||||||
|
Qdrant is available as a supported index in Semantic-Router for you to ingest route data and perform retrievals.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
To use Semantic-Router with Qdrant, install the `qdrant` extra:
|
||||||
|
|
||||||
|
```console
|
||||||
|
pip install semantic-router[qdrant]
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Set up `QdrantIndex` with the appropriate configurations:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from semantic_router.index import QdrantIndex
|
||||||
|
|
||||||
|
qdrant_index = QdrantIndex(
|
||||||
|
url="https://xyz-example.eu-central.aws.cloud.qdrant.io", api_key="<your-api-key>"
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
Once the Qdrant index is set up with the appropriate configurations, we can pass it to the `RouteLayer`.
|
||||||
|
|
||||||
|
```python
|
||||||
|
from semantic_router.layer import RouteLayer
|
||||||
|
|
||||||
|
RouteLayer(encoder=some_encoder, routes=some_routes, index=qdrant_index)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Complete Example
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
<summary><b>Click to expand</b></summary>
|
||||||
|
|
||||||
|
```python
|
||||||
|
import os
|
||||||
|
|
||||||
|
from semantic_router import Route
|
||||||
|
from semantic_router.encoders import OpenAIEncoder
|
||||||
|
from semantic_router.index import QdrantIndex
|
||||||
|
from semantic_router.layer import RouteLayer
|
||||||
|
|
||||||
|
# we could use this as a guide for our chatbot to avoid political conversations
|
||||||
|
politics = Route(
|
||||||
|
name="politics value",
|
||||||
|
utterances=[
|
||||||
|
"isn't politics the best thing ever",
|
||||||
|
"why don't you tell me about your political opinions",
|
||||||
|
"don't you just love the president",
|
||||||
|
"they're going to destroy this country!",
|
||||||
|
"they will save the country!",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
# this could be used as an indicator to our chatbot to switch to a more
|
||||||
|
# conversational prompt
|
||||||
|
chitchat = Route(
|
||||||
|
name="chitchat",
|
||||||
|
utterances=[
|
||||||
|
"how's the weather today?",
|
||||||
|
"how are things going?",
|
||||||
|
"lovely weather today",
|
||||||
|
"the weather is horrendous",
|
||||||
|
"let's go to the chippy",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
# we place both of our decisions together into single list
|
||||||
|
routes = [politics, chitchat]
|
||||||
|
|
||||||
|
os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>"
|
||||||
|
encoder = OpenAIEncoder()
|
||||||
|
|
||||||
|
rl = RouteLayer(
|
||||||
|
encoder=encoder,
|
||||||
|
routes=routes,
|
||||||
|
index=QdrantIndex(location=":memory:"),
|
||||||
|
)
|
||||||
|
|
||||||
|
print(rl("What have you been upto?").name)
|
||||||
|
```
|
||||||
|
|
||||||
|
This returns:
|
||||||
|
|
||||||
|
```console
|
||||||
|
[Out]: 'chitchat'
|
||||||
|
```
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
|
## 📚 Further Reading
|
||||||
|
|
||||||
|
- Semantic-Router [Documentation](https://github.com/aurelio-labs/semantic-router/tree/main/docs)
|
||||||
|
- Semantic-Router [Video Course](https://www.aurelio.ai/course/semantic-router)
|
||||||
@@ -244,5 +244,6 @@ Qdrant supports all the Spark data types, and the appropriate data types are map
|
|||||||
| `sparse_vector_index_fields` | Comma-separated names of columns holding the sparse vector indices. | `ArrayType(IntegerType)` | ❌ |
|
| `sparse_vector_index_fields` | Comma-separated names of columns holding the sparse vector indices. | `ArrayType(IntegerType)` | ❌ |
|
||||||
| `sparse_vector_value_fields` | Comma-separated names of columns holding the sparse vector values. | `ArrayType(FloatType)` | ❌ |
|
| `sparse_vector_value_fields` | Comma-separated names of columns holding the sparse vector values. | `ArrayType(FloatType)` | ❌ |
|
||||||
| `sparse_vector_names` | Comma-separated names of the sparse vectors in the collection. | - | ❌ |
|
| `sparse_vector_names` | Comma-separated names of the sparse vectors in the collection. | - | ❌ |
|
||||||
|
| `shard_key_selector` | Comma-separated names of custom shard keys to use during upsert. | - | ❌ |
|
||||||
|
|
||||||
For more information, be sure to check out the [Qdrant-Spark GitHub repository](https://github.com/qdrant/qdrant-spark). The Apache Spark guide is available [here](https://spark.apache.org/docs/latest/quick-start.html). Happy data processing!
|
For more information, be sure to check out the [Qdrant-Spark GitHub repository](https://github.com/qdrant/qdrant-spark). The Apache Spark guide is available [here](https://spark.apache.org/docs/latest/quick-start.html). Happy data processing!
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 611 KiB |
Reference in New Issue
Block a user