Начало работы с подключением Milvus
Milvus — это векторная база данных с открытым исходным кодом для создания AI-приложений с эмбеддингами неструктурированных данных. В ней уже встроено всё необходимое для начала работы, и она запускается на вашем локальном компьютере или размещается в Zilliz Cloud (см. блокнот connect to Zilliz Free Tier).
У Milvus есть четыре SDK: Java, Python, React и Ruby. Ниже мы покажем шаги для Python.
Установите и запустите сервер Milvus
pip install milvus pymilvus #pymilvus is the python sdk
from milvus import default_server
default_server.start()
Примечание: Если вы подключаетесь к Zilliz, вы можете пропустить установку Milvus и вместо этого запустить кластер из консоли.
Получите клиент Milvus (подключение)
from pymilvus import connections
connections.connect(
host=’127.0.0.1’,
port=default_server.listen_port)
Примечание: Чтобы подключиться к serverless Milvus, работающему в Zilliz Cloud, вместо localhost, вам нужно получить endpoint uri и token из консоли.
from pymilvus import connections
ENDPOINT=”https://endpoint.api.region.zillizcloud.com:443”
connections.connect(
uri=ENDPOINT,
token=TOKEN)
Создайте коллекцию
Коллекцию можно представить как таблицу базы данных. Это место, где вы будете хранить свои эмбеддинги, документы и любые дополнительные метаданные.
С коллекцией связаны схема и индекс.
Индекс строится с использованием векторного алгоритма поиска и метрики векторного сходства. Вы можете использовать настройки Milvus по умолчанию. Однако для оптимальной производительности вам следует настроить параметры. Выбор поискового индекса и параметров зависит от ваших данных. См. это руководство по лучшим практикам для выбора поискового индекса. В этом блокноте показано, как изменить параметры.
from pymilvus import (
FieldSchema, DataType,
CollectionSchema, Collection)
## 1. Define a minimum expandable schema.
fields = [
FieldSchema(“pk”, DataType.INT64, is_primary=True, auto_id=True),
FieldSchema(“vector”, DataType.FLOAT_VECTOR, dim=768),
]
schema = CollectionSchema(
fields,
enable_dynamic_field=True,
)
## 2. Create a collection.
mc = Collection(“my_collection_name”, schema)
## 3. Index the collection.
mc.create_index(
field_name=”vector”,
index_params={
“Index_type”: “AUTOINDEX”,
“Metric_type”: “COSINE”,
}
Вставьте данные в Milvus
Если у вас уже есть сгенерированные эмбеддинги из ваших неструктурированных данных, вы можете загрузить их.
Входные данные могут быть в форме pandas dataframe или списка словарей. Они должны содержать векторный эмбеддинг. Остальные поля являются необязательными: исходный текстовый фрагмент и поля метаданных.
from pymilvus import connections
## 1. Input data can be pandas dataframe or list of dicts.
data_rows = []
data_rows.extend([
{“vector”: np.random.randn(768).tolist(),
“text”: “This is a document”,
“source”: “source_url_1”},
{“vector”: np.random.randn(768).tolist(),
“text”: “This is another document”,
“source”: “source_url_2”},
])
## 2. Insert data into milvus.
mc.insert(data_rows)
mc.flush()
Запросите коллекцию
Вопросы необходимо эмбеддить с использованием той же модели, которая использовалась для эмбеддинга неструктурированных данных, загруженных в базу данных. Вы можете запрашивать коллекцию, используя эмбеддинги вопросов с параметрами поиска Milvus по умолчанию. Те же лучшие практики применяются к выбору правильного поискового индекса для оптимальной производительности.
Ниже Milvus вернет top_k = 3 наиболее похожих результата. Также обратите внимание, что возвращаются исходный фрагмент текста и метаданные, что может помочь с grounding (основанием сгенерированного текста на фактической информации для снижения галлюцинаций).
## 1. Search for answers to your embedded questions.
mc.load()
results = mc.search(
data=encoder([“my_question_1”]),
anns_field=”vector”,
output_fields-[“text”, “source”], #optional return fields
limit=3,
param={}, #no params if using milvus defaults
)
## 2. View the answers.
for n, hits in enumerate(results):
print(f”{n}th result:”)
for hit in hits:
print(hit)
В моем следующем блоге я расскажу, как создать чат-бота с использованием LangChain и Milvus. Оставайтесь на связи.
Дополнительные ресурсы для начала работы с Milvus и Zilliz
Читать далее

Build Multimodal Search for 3D Assets with Tripo and Zilliz Cloud
Generate 3D assets with Tripo, then search them by text, image, and metadata with multimodal embeddings and Zilliz Cloud.

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

Similarity Metrics for Vector Search
Exploring five similarity metrics for vector search: L2 or Euclidean distance, cosine distance, inner product, and hamming distance.



