Elastic
Jina AI
Модели
API
keyboard_arrow_down
Читатель
Читайте URL-адреса и ищите информацию в Интернете для получения более подходящей подготовки для получения степени магистра права.
Вложения
Мультимодальные многоязычные векторные представления.
Реранкер
Инструмент переранжирования для максимизации релевантности результатов поиска.
Elastic Inference Service
Запускайте модели Jina непосредственно в Elasticsearch.
MCP
terminal
CLI
article
llms.txt
smart_toy
Агенты
data_object
Схема
menu_book
Документы
Авторизоваться
login
RAG в контексте
Анатомия системы RAG
Установка необходимых компонентов
Подключение к Mistral-Instruct через Hugging Face Inference API
Информационный поиск с Qdrant и Jina Embeddings
Jina AI и Qdrant
Свяжитесь с нами
Технический блог
март 04, 2024

Создание RAG-системы с помощью Jina Embeddings и Qdrant

Создайте систему RAG с помощью Jina Embeddings v2, векторной базы данных Qdrant, LlamaIndex и Mistral LLM.
Promotional graphic with "EMBEDDINGS 2" and Drant logo separated by a red cross, symbolizing a partnership.
Scott Martens • 13 минуты чтения

Дополненная поиском генерация - это быстро развивающаяся группа методов, которые были изначально задуманы как расширение больших языковых моделей (LLM), но все чаще рассматриваются как альтернативная парадигма, полностью переосмысливающая роль AI-моделей.

Мы покажем вам, как создать базовый RAG-движок, используя фреймворк LlamaIndex, открытую языковую модель Mistral, Jina Embeddings v2 и векторную базу данных Qdrant для AI.

tagRAG в контексте

В системе RAG роль AI-модели остается центральной, но гораздо более ограниченной. Вместо того чтобы отвечать на запросы из своих внутренних знаний, полученных из обучающих данных, ей предоставляется релевантная информация в промпте. Роль модели заключается в том, чтобы понять и синтезировать информацию в выходные данные.

Это использует сильные стороны AI-моделей и минимизирует их слабости.

Например, мы можем дать модели Mistral-Instruct следующий промпт:

Answer the query. Please be brief, concise, and complete.
Query: Why is Taylor Swift planning to attend the Superbowl?
Answer:

Когда я это сделал, модель ответила:

I don't have real-time information. However, as of my last update, 
Taylor Swift is not officially confirmed to attend or perform at 
the Superbowl. If there are any updates, I recommend checking the 
latest news sources.

Большие языковые модели дорого обновлять и переобучать, поэтому их внутренняя информация никогда не может быть полностью актуальной.

Более того, большие языковые модели известны своими "галлюцинациями", то есть правдоподобными ответами, которые могут быть частично или полностью неверными и требуют проверки.

Answer the query. Please be brief, concise, and complete.
Query: What was Weird Al Yankovic's first Taylor Swift parody?
Answer:

Weird Al Yankovic's first Taylor Swift parody was "TMZ," a spoof 
of Swift's song "Blank Space." The parody was released in 2014 
as part of Yankovic's album "Mandatory Fun." The song humorously 
addresses the obsession with celebrity gossip and scandals, as 
reported by the tabloid news website TMZ.

Песня Weird Al Yankovic TMZ была выпущена в 2011 году в альбоме Alpocalypse и является пародией на песню Swift You Belong with Me.

Природа нейронных сетей делает галлюцинации трудными, если не невозможными для полного предотвращения, что серьезно подрывает любой план использования AI-моделей в качестве источников информации.

По словам Сэма Альтмана, CEO OpenAI:

"Я думаю, люди совершают большую ошибку, когда думают об этих моделях [LLM] как о базе данных. [...] Это будет работать, вроде как. Но это самая дорогая, самая медленная и наименее точная база данных в мире."

RAG минимизирует зависимость от внутренних знаний AI-модели о фактах окружающего мира и использует ее главные сильные стороны: понимание естественного языка и свободную генерацию текста.

Давайте рассмотрим еще один пример вопроса, на который Mistral-Instruct не может ответить:

Answer the query. Please be brief, concise, and complete.

Query: What is the title of Taylor Swift's next album?
Answer:

As of the time I am providing this answer, Taylor Swift has 
not yet announced the title of her next album. She has released 
several re-recorded albums, but the title of her next original 
album remains unknown. I recommend checking her official social 
media channels or website for the latest updates.

Теперь система RAG может иметь базу данных последних новостных статей или, возможно, искать в Интернете тексты, связанные с названием следующего альбома Taylor Swift. Затем она вставит найденные тексты в промпт.

Предположим, она определила эту статью AP как релевантную запросу и составляет следующий промпт:

Context information is below.
---------------------
February 6, 2024
LOS ANGELES (AP) — Forget her "Reputation." Taylor Swift has a 
whole new album coming out.

Accepting the Grammy for best pop vocal album on Sunday night, 
Taylor said she'd been keeping a secret for two years.

"My brand-new album comes out April 19. It's called 'The Tortured 
Poets Department.' I'm going to go and post the cover right now 
backstage," she announced.

And so she did.

---------------------
Given the context information and not prior knowledge, answer the query. 
Please be brief, concise, and complete.
If the context information does not contain an answer to the query, 
respond with "No information".
Query: What is the title of Taylor Swift's next album?
Answer:

Mistral-Instruct ответила:

The title of Taylor Swift's next album is 'The Tortured Poets Department'.

Такой тип промптинга также значительно снижает вероятность галлюцинаций. Например:

Context information is below.
---------------------
Alpocalypse is the thirteenth studio album by American parody 
musician "Weird Al" Yankovic, released on June 21, 2011.

Track List

1. Perform This Way (Parody of "Born This Way" by Lady Gaga)
2. CNR
3. TMZ (Parody of "You Belong with Me" by Taylor Swift)
4. Skipper Dan
5. Polka Face (Polka medley including songs by artists such as 
   Lady Gaga, Justin Bieber, Britney Spears, Ke$ha, and others)
6. Craigslist
7. Party in the CIA (Parody of "Party in the U.S.A." by Miley 
   Cyrus)
8. Ringtone
9. Another Tattoo (Parody of "Nothin' on You" by B.o.B featuring 
   Bruno Mars)
10. If That Isn't Love
11. Whatever You Like (Parody of "Whatever You Like" by T.I.)
12. Stop Forwarding That Crap to Me

---------------------
Given the context information and not prior knowledge, answer the 
query. Please be brief, concise, and complete.
If the context information does not contain an answer to the query, 
respond with "No information".
Query: What was Weird Al Yankovic's first Taylor Swift parody, what 
year was it released, and what song was he parodying?
Answer:

Weird Al Yankovic's first Taylor Swift parody was "TMZ," and it was 
released in 2011. He was parodying "You Belong with Me" by Taylor 
Swift.

tagАнатомия системы RAG

Система RAG имеет как минимум два компонента:

  • Генеративная AI-модель.
  • Система поиска информации.

В этой статье мы будем использовать Mistral-Instruct в качестве генеративной AI-модели и получать к ней доступ через Hugging Face Inference API. Для системы поиска информации мы будем использовать векторную базу данных Qdrant и Jina Embeddings.

В качестве источника данных мы будем использовать Национальный стратегический план исследований и разработок в области искусственного интеллекта, обновление 2023 года, опубликованный в мае 2023 года Национальным советом по науке и технологиям, органом, который консультирует президента США по научным и техническим вопросам. Этот документ объемом примерно 25 000 слов является документом по политике и стратегическому планированию американской политики и разработок в области AI.

Это также классический правительственный программный документ, который "слишком длинный, чтобы читать". Большая его часть очень скучная, и если у вас нет заинтересованности или близкого интереса к этой области, вы, вероятно, не станете его читать. Но вы все равно можете хотеть знать, что в нем говорится.

В этой статье мы проведем вас через этапы создания системы RAG, способной отвечать на вопросы о тексте и его содержании.

tagУстановка необходимых компонентов

Сначала убедитесь, что у вас установлены все необходимые библиотеки Python. В вашем окружении Python выполните следующие команды:

pip install llama-index qdrant-client 
pip install pdfminer.six llama-index-vector-stores-qdrant
pip install llama-index-llms-openai llama-index-embeddings-jinaai 
pip install llama-index-llms-huggingface "huggingface_hub[inference]"

Мы будем использовать LlamaIndex для создания RAG-системы с использованием языковой модели Mistral-Instruct и pdfminer.six для обработки PDF-файла в векторное хранилище Qdrant.

tagПодключение к Mistral-Instruct через Hugging Face Inference API

Сначала настроим LLM. Вам понадобится доступ к Hugging Face Inference API, включая токен доступа. Если у вас есть аккаунт Hugging Face, вы можете получить его на странице настроек вашего аккаунта.

Если у вас нет аккаунта, сначала создайте его, затем создайте токен доступа.

Поместите ваш токен в переменную для дальнейшего использования:

hf_inference_api_key = '<your HuggingFace Inference API token>'

Далее создадим шаблон промпта:

from llama_index.core import PromptTemplate

qa_prompt_tmpl = (
    "Context information is below.\n"
    "---------------------\n"
    "{context_str}\\n"
    "---------------------\n"
    "Given the context information and not prior knowledge, "
    "answer the query. Please be brief, concise, and complete.\n"
    "If the context information does not contain an answer to the query, "
    "respond with \"No information\".\n"
    "Query: {query_str}\n"
    "Answer: "
)
qa_prompt = PromptTemplate(qa_prompt_tmpl)

Этот шаблон инструктирует LLM использовать только предоставленную в промпте контекстную информацию для ответов на вопросы. Этот промпт хорошо работал с Mistral-Instruct, но вы можете экспериментировать с другими формулировками, чтобы найти то, что подходит для вашего случая.

from llama_index.llms.huggingface import HuggingFaceInferenceAPI

mixtral_llm = HuggingFaceInferenceAPI(
    model_name="mistralai/Mixtral-8x7B-Instruct-v0.1", 
    token=hf_inference_api_key
)

Наконец, создадим и инициализируем объект для фреймворка LlamaIndex, который содержит подключение к Mistral-Instruct. Код ниже взят из предыдущего поста о создании RAG-систем с использованием LlamaIndex.

Это помещает подключение к Mistral LLM в переменную mistral_llm.

tagИнформационный поиск с Qdrant и Jina Embeddings

Для настройки системы поиска вам понадобится ключ API Jina Embeddings. Вы можете получить его бесплатно с предоплаченным бюджетом в 1 миллион токенов на сайте Jina Embeddings.

Embedding API
Start with 1M free tokens. Top-performing, 8192 context length bilingual embeddings for your search and RAG systems.

Поместите ваш ключ Jina Embeddings в переменную для дальнейшего использования:

jina_emb_api_key = "<your Jina Embeddings API key>"

Затем создайте объект-коннектор с помощью LlamaIndex для сервера Jina Embeddings, выбрав конкретно английскую одноязычную модель:

from llama_index.embeddings.jinaai import JinaEmbedding

jina_embedding_model = JinaEmbedding(
    api_key=jina_emb_api_key,
    model="jina-embeddings-v2-base-en",
)

tagЗагрузка текстовых данных

Далее мы загрузим документ и разделим его на параграфы. Сначала загрузим PDF с сайта Белого дома в переменную pdf_data:

import urllib.request

uri = "https://www.whitehouse.gov/wp-content/uploads/2023/05/National-Artificial-Intelligence-Research-and-Development-Strategic-Plan-2023-Update.pdf"
pdf_data = urllib.request.urlopen(uri).read()

Затем мы обработаем PDF постранично, извлекая текст и разбивая его на параграфы путем разделения по двойным переносам строк. Они сохраняются в списке text_paras:

import regex as re
from io import BytesIO, StringIO
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfparser import PDFParser

text_paras = []
parser = PDFParser(BytesIO(pdf_data))
doc = PDFDocument(parser)
rsrcmgr = PDFResourceManager()
for page in PDFPage.create_pages(doc):
    output_string = StringIO()
    device = TextConverter(rsrcmgr, output_string, laparams=LAParams())
    interpreter = PDFPageInterpreter(rsrcmgr, device)
    interpreter.process_page(page)
    page_text = output_string.getvalue()
    text_paras.extend(re.split(r'\n\s*\n', page_text))

Проверим, что всё загружено:

assert len(text_paras) == 615

Далее мы преобразуем этот список коротких текстов в объекты Document LlamaIndex:

from llama_index.core.readers import StringIterableReader

rag_docs = StringIterableReader().load_data(text_paras)

И вы можете проверить текст:

print(rag_docs[0].text)

Результат:

NATIONAL ARTIFICIAL INTELLIGENCE 
RESEARCH AND DEVELOPMENT 
STRATEGIC PLAN 
2023 UPDATE

tagНастройка векторной базы данных Qdrant

В этой статье мы будем использовать Qdrant Vector Search Cloud для реализации базы данных RAG-системы. Бесплатный тариф Qdrant включает 1 ГБ хранилища, чего более чем достаточно для этого руководства.

Вам нужно будет создать аккаунт на сайте Qdrant Cloud прежде чем продолжить.

Vector Search Database | Qdrant Cloud
Managed cloud solution of the Qdrant vector search engine. Cloud-native vector database for high performant vector similarity search.
Qdrant Cloud

После того как у вас будет аккаунт и вы войдете в систему, вам нужно будет создать кластер. Следуйте инструкциям "быстрого старта" на сайте Qdrant, чтобы настроить бесплатный кластер и получить API-ключ и имя хост-сервера Qdrant.

Quickstart - Qdrant
Qdrant is an Open-Source Vector Database and Vector Search Engine written in Rust. It provides fast and scalable vector similarity search service with convenient API.
Edit on GitHub

Сохраните ключ и имя хоста в переменных:

qdrant_api_key = "<your API key>"
qdrant_server = "https://<your server>"

Далее нам нужно импортировать соответствующие компоненты из пакетов qdrant_client и llama_index:

import qdrant_client
from llama_index.vector_stores.qdrant import QdrantVectorStore

client = qdrant_client.QdrantClient(qdrant_server, api_key=qdrant_api_key)
vector_store = QdrantVectorStore(client=client, collection_name="NTSC")

Это создает коллекцию с названием NTSC в вашем бесплатном кластере.

Вы можете прочитать документацию Qdrant для получения информации о создании локального хранилища данных в памяти или на диске и размещении собственного экземпляра сервера Qdrant в docker-контейнере через веб-API.

tagЗавершение системы RAG

Теперь мы соберем эти компоненты в полноценную систему RAG, используя шаблонный код для LlamaIndex:

from llama_index.core.query_engine import RetrieverQueryEngine
from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.core.storage.storage_context import StorageContext
from llama_index.core import (
		VectorStoreIndex,
		ServiceContext,
		get_response_synthesizer,
)

# set up the service and storage contexts
service_context = ServiceContext.from_defaults(
    llm=mixtral_llm, embed_model=jina_embedding_model
)
storage_context = StorageContext.from_defaults(vector_store=vector_store)

# create an index
index = VectorStoreIndex.from_documents(
    rag_docs, storage_context=storage_context, service_context=service_context
)

# configure retriever
retriever = VectorIndexRetriever(
    index=index,
    similarity_top_k=2,
)

# configure response synthesizer
response_synthesizer = get_response_synthesizer(
    service_context=service_context,
    text_qa_template=qa_prompt,
    response_mode="compact",
)

# assemble query engine
query_engine = RetrieverQueryEngine(
    retriever=retriever,
    response_synthesizer=response_synthesizer,
)

Эта система будет использовать Jina Embeddings для индексации параграфов из нашего текстового источника и будет помещать два лучших совпадения в контекст каждого промпта. Чтобы изменить, например, на три лучших совпадения, просто измените параметр similarity_top_k при инициализации VectorIndexRetriever выше:

# configure retriever
retriever = VectorIndexRetriever(
    index=index,
    similarity_top_k=3,
)

Теперь система готова к использованию.

tagЗапрос к документу

Давайте попробуем простой запрос:

response = query_engine.query("""
What is the Biden Administration's policy with regard to AI? 
""")
print(response.response)

Результат (ваш может отличаться):

The Biden Administration prioritizes responsible AI systems that 
are ethical, trustworthy, and safe, and serve the public good. 
The Administration has committed to substantial funding for AI 
R&D, and has established the National AI Initiative Office to 
coordinate AI activities across the federal government. 

The Administration's AI policy focuses on developing evaluative
techniques for AI, workforce development, public-private
partnerships, and international collaboration in AI research.

Или что-то более конкретное:

response = query_engine.query("""
What protections does the AI Bill of Rights propose to offer?
""")

print(response.response)
The AI Bill of Rights proposes five core protections: Safe and 
Effective Systems; Algorithmic Discrimination Protections; Data 
Privacy; Notice and Explanation; and Human Alternatives, 
Consideration, and Fallback.

Или даже очень конкретное:

response = query_engine.query("Who is Kei Koizumi?")
print(response.response)
Kei Koizumi is the Principal Deputy Director for Policy at the Office 
of Science and Technology Policy (OSTP).

Вы также можете задавать более необычные вопросы:

response = query_engine.query("""
What rights will AI's receive under President Biden's proposed 
AI Bill of Rights?
""")
print(response.response)
The proposed AI Bill of Rights does not grant rights to AI systems, but 
rather outlines principles to ensure that AI technologies are 
developed and used in a manner that respects human rights and values. 
The principles include safety, transparency, fairness, disclosure, 
data privacy, non-discrimination, and the ability for individuals to 
opt out of certain AI systems.
response = query_engine.query("""
Why is President Biden's proposing an AI Bill of Rights?
Does AI really need rights?
""")
print(response.response)
President Biden's proposed AI Bill of Rights aims to ensure that AI 
technologies are developed and used ethically, legally, and with 
societal considerations in mind. The Bill of Rights is not granting 
"rights" to AI, but rather setting guidelines for the responsible 
development and deployment of AI systems to protect individuals and 
communities from potential negative impacts.
response = query_engine.query("""
Has Donald Trump weighed in on AI?
Will he Make Humans Great Again?
""")
print(response.response)
No information. The context information does not mention Donald 
Trump's views on AI.

tagJina AI и Qdrant

Контекстное окно Jina Embeddings в 8k токенов делает его особенно подходящим для генерации с дополнением из retrieval, поскольку он может работать с гораздо более крупными блоками текста. В то время как другим RAG-приложениям часто приходится хранить отдельные предложения или пары предложений, в этом руководстве мы могли использовать целые параграфы, не беспокоясь об их размере.

Это уменьшает количество текстовых элементов, которые необходимо хранить для передачи той же информации, снижая вычислительные затраты, экономя память и делая поиск быстрее.

Векторная база данных Qdrant проста в настройке, быстра и экономична, и, как вы видели, требуется всего несколько строк Python-кода для интеграции ее в систему RAG.

Для получения дополнительной информации о базе данных Qdrant, готовой к работе с ИИ, и облачных предложениях вы можете посетить их веб-сайт.

Qdrant - Vector Database
Qdrant is an Open-Source Vector Database and Vector Search Engine written in Rust. It provides fast and scalable vector similarity search service with convenient API.
Vector Database

tagСвяжитесь с нами

Jina AI стремится сделать надежные и доступные технологии ИИ доступными для предприятий любого размера и типа. Мы будем рады узнать о ваших сценариях использования и помочь внедрить ИИ в ваши бизнес-процессы. Для получения дополнительной информации о предложениях Jina AI и для связи с нами посетите веб-сайт Jina AI или присоединяйтесь к нашему сообществу в Discord.

Jina AI - Best Embeddings and Perfect Prompts
Jina AI provides best-in-class embedding API and prompt optimizer, easing the development of multimodal AI applications.
Best Embeddings and Perfect Prompts
Join the Jina AI Discord Server!
Check out the Jina AI community on Discord - hang out with 4493 other members and enjoy free voice and text chat.
Discord
Категории:
Технический блог
rss_feed

Читать далее
март 11, 2026 • 7 минуты чтения
Bootstrapping Audio Embeddings from Multimodal LLMs
Han Xiao
Abstract illustration of a sound wave or heartbeat, formed by blue, orange, and gray dots on a white background.
март 06, 2026 • 6 минуты чтения
Identifying Embedding Models from Raw Numerical Values
Han Xiao
Fingerprint illustration made from numbers, showcasing digital and high-tech design on a light background.
сентябрь 09, 2025 • 11 минуты чтения
Multimodal Embeddings in Llama.cpp and GGUF
Andrei Ungureanu
Alex C-G
Cartoon llama in the center of a white background, emitting laser-like beams from its eyes. The illustration creates a playfu
Текущий язык / тема
Search Foundation
Читатель
Вложения
Реранкер
Получить API-ключ Jina
Ограничение скорости
О нас
Новости
Загрузить логотип Jina
open_in_new
Скачать логотип Elastic
open_in_new
Статус API
Elastic © 2026.БезопасностьУсловия использованияКонфиденциальностьУправление файлами cookieНе продавайте и не передавайте мою личную информацию третьим лицам.
Данный веб-сайт и весь связанный с ним контент, программное обеспечение, продукты и услуги предназначены исключительно для профессионального использования. Использование в потребительских целях не предполагается и не рекомендуется.