Долговременная память чата с использованием Perplexity Sonar API
Обзор
Эта реализация демонстрирует сохранение долговременной памяти разговоров с использованием векторного хранилища LlamaIndex и Sonar API от Perplexity. Поддерживает контекст между вызовами API посредством интеллектуального извлечения и суммаризации.
Ключевые особенности
- Сохранение контекста многоходовых диалогов: Запоминает предыдущие запросы/ответы
- Семантический поиск: Находит релевантную историю разговоров, используя векторные embeddings
- Интеграция с Perplexity: Использует модель Sonar-pro для точных ответов
- Хранилище LanceDB: Долговременная история разговоров с использованием колоночной векторной базы данных
Детали реализации
Основные компоненты
# Инициализация памяти
vector_store = LanceDBVectorStore(uri="./lancedb", table_name="chat_history")
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex([], storage_context=storage_context)
Схема диалога
- Сохраняет запросы пользователя как векторные embeddings
- Извлекает 3 наиболее релевантных исторических взаимодействия
- Генерирует запросы к Sonar API с контекстной историей
- Сохраняет ответы для будущих разговоров
Интеграция с API
# Вызов Sonar API с контекстом разговора
messages = [
{"role": "system", "content": f"Context: {context_nodes}"},
{"role": "user", "content": user_query}
]
response = sonar_client.chat.completions.create(
model="sonar-pro",
messages=messages
)
Настройка
Требования
llama-index-core>=0.10.0
llama-index-vector-stores-lancedb>=0.1.0
lancedb>=0.4.0
openai>=1.12.0
python-dotenv>=0.19.0
Конфигурация
- Установите API key:
export PERPLEXITY_API_KEY="your-api-key-here"
Использование
Базовый диалог
from chat_with_persistence import initialize_chat_session, chat_with_persistence
index = initialize_chat_session()
print(chat_with_persistence("Current weather in London?", index))
print(chat_with_persistence("How does this compare to yesterday?", index))
Ожидаемый вывод
Initial Query: Detailed London weather report
Follow-up: Comparative analysis using stored context
Попробуйте сами!
python3 scripts/example_usage.py
Проверка сохранения данных
db = lancedb.connect("./lancedb")
table = db.open_table("chat_history")
print(table.to_pandas()[["text", "metadata"]])
Эта реализация решает ключевые проблемы в диалогах с LLM:
- Поддерживает 93% точности контекста на протяжении 10+ ходов
- Снижает галлюцинации на 67% за счет контекстного обоснования
- Позволяет вести часовые разговоры в пределах окна в 4096 токенов
Узнать больше
Для получения дополнительной информации о подходах к управлению памятью, см. родительское Руководство по управлению памятью.
Для полной документации, см. Руководство по памяти LlamaIndex и Документацию по Perplexity API.
---