Mixpeek видео эмбеддинги#
Возможности обработки видео Mixpeek позволяют разбивать и вложить видео, а Platform V Vector DB (далее - Vector DB) обеспечивает эффективное хранение и извлечение этих встроенных элементов.
Предварительные требования#
Python 3.7+;
Ключ API Mixpeek;
Установленный клиент Mixpeek (
pip install mixpeek);Установленный клиент Vector DB (
pip install qdrant-client).
Установка#
Установите необходимые пакеты:
pip install mixpeek qdrant-clientНастройте ключ API Mixpeek:
from mixpeek import Mixpeek mixpeek = Mixpeek('your_api_key_here')Инициализируйте клиента Vector DB:
from qdrant_client import QdrantClient client = QdrantClient("localhost", port=6333)
Использование#
Создание коллекции Vector DB
Убедитесь, что создали коллекцию Vector DB перед вставкой векторов. Можно создать коллекцию с соответствующим размером вектора (768 для модели vuse-generic-v1) с помощью следующего кода:
client.create_collection( collection_name="video_chunks", vectors_config=models.VectorParams(size=768, distance=models.Distance.COSINE) )Обработка и вложение видео
Сначала обработайте видео на части и внедрите каждую часть:
from mixpeek import Mixpeek from qdrant_client import QdrantClient, models mixpeek = Mixpeek('your_api_key_here') client = QdrantClient("localhost", port=6333) video_url = "https://mixpeek-public-demo.s3.us-east-2.amazonaws.com/starter/jurassic_park_trailer.mp4" # Process video chunks processed_chunks = mixpeek.tools.video.process( video_source=video_url, chunk_interval=1, # 1 second intervals resolution=[720, 1280] ) # Embed each chunk and insert into Qdrant for index, chunk in enumerate(processed_chunks): print(f"Processing video chunk: {index}") embedding = mixpeek.embed.video( model_id="vuse-generic-v1", input=chunk['base64_chunk'], input_type="base64" )['embedding'] # Insert into Qdrant client.upsert( collection_name="video_chunks", points=[models.PointStruct( id=index, vector=embedding, payload={ "start_time": chunk["start_time"], "end_time": chunk["end_time"] } )] ) print(f" Embedding preview: {embedding[:5] + ['...'] + embedding[-5:]}") print(f"Processed and inserted {len(processed_chunks)} chunks")Поиск похожих фрагментов видео
Чтобы найти похожие фрагменты видео, можно использовать либо текстовые запросы, либо запросы по видео.
Текстовый запрос#
query_text = "a car chase scene"
# Embed the text query
query_embedding = mixpeek.embed.video(
model_id="vuse-generic-v1",
input=query_text,
input_type="text"
)['embedding']
# Search in Qdrant
search_results = client.query_points(
collection_name="video_chunks",
query=query_embedding,
limit=5
).points
for result in search_results:
print(f"Chunk ID: {result.id}, Score: {result.score}")
print(f"Time range: {result.payload['start_time']} - {result.payload['end_time']}")
Видео-запрос#
query_video_url = "https://mixpeek-public-demo.s3.us-east-2.amazonaws.com/starter/jurassic_bunny.mp4"
# Embed the video query
query_embedding = mixpeek.embed.video(
model_id="vuse-generic-v1",
input=query_video_url,
input_type="url"
)['embedding']
# Search in Qdrant
search_results = client.query_points(
collection_name="video_chunks",
query=query_embedding,
limit=5
).points
for result in search_results:
print(f"Chunk ID: {result.id}, Score: {result.score}")
print(f"Time range: {result.payload['start_time']} - {result.payload['end_time']}")
Дополнительная документация#
Для получения дополнительной информации о Mixpeek Embed ознакомьтесь с официальной документацией.