2.2.1 Использование LangChain для построения цепочек обработки
Пример: Создание RAG-системы с LangChain и Faiss
LangChain позволяет объединить поиск, обработку и генерацию ответа.
```python
from langchain.chains import RetrievalQA
from langchain.vectorstores import FAISS
from langchain.embeddings import HuggingFaceEmbeddings
from langchain.llms import OpenAI
# Подготовка данных для индекса
texts = [
"Когнитивное программирование – это метод оптимизации командной работы.",
"Модели мышления помогают в разработке стратегий."
]
embeddings = HuggingFaceEmbeddings(model_name="all-MiniLM-L6-v2")
vectorstore = FAISS.from_texts(texts, embeddings)
# Настройка LangChain
llm = OpenAI(model="gpt-4", openai_api_key="your-api-key")
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=vectorstore.as_retriever(),
return_source_documents=True
)
# Запрос
query = "Как когнитивное программирование влияет на команды?"
response = qa_chain.run(query)
print(response)
```
Этот пример подходит для локальной системы с минимальными затратами на инфраструктуру.
2.2.2 Использование Haystack для визуализации рабочих процессов
Пример: Создание поисковой системы с Haystack и Pinecone
Haystack предоставляет удобные инструменты для работы с документами и визуализации процессов.
```python
from haystack.document_stores import PineconeDocumentStore
from haystack.nodes import DensePassageRetriever, FARMReader
from haystack.pipelines import ExtractiveQAPipeline
# Инициализация Pinecone
document_store = PineconeDocumentStore(
api_key="your-api-key",
environment="your-environment",
index="cognitive-docs"
)
# Настройка векторизатора и модели
retriever = DensePassageRetriever(
document_store=document_store,
query_embedding_model="facebook/dpr-question_encoder-single-nq-base",
passage_embedding_model="facebook/dpr-ctx_encoder-single-nq-base"
)
document_store.update_embeddings(retriever)
reader = FARMReader(model_name_or_path="deepset/roberta-base-squad2")
pipeline = ExtractiveQAPipeline(reader, retriever)
# Запрос
query = "Что такое когнитивное программирование?"
results = pipeline.run(query=query, params={"Retriever": {"top_k": 3}, "Reader": {"top_k": 1}})
print(results)
```
Этот пример подходит для облачных решений с визуализацией данных.
2.2.3 Векторизация текста с помощью Sentence Transformers
Пример: Оптимизация представления данных для поиска
Sentence Transformers позволяют создавать компактные векторные представления текста для интеграции с Faiss.
```python
from sentence_transformers import SentenceTransformer
import faiss
# Загрузка модели
model = SentenceTransformer("all-MiniLM-L6-v2")
# Векторизация текстов
texts = [
"Когнитивное программирование помогает оптимизировать мышление.",
"Модели мышления используются в стратегиях командной работы."
]
vectors = model.encode(texts)
# Настройка Faiss
dimension = vectors.shape[1]
index = faiss.IndexFlatL2(dimension)
index.add(vectors)
# Поиск
query = "Как улучшить мышление в команде?"
query_vector = model.encode([query])
distances, indices = index.search(query_vector, k=2)
print("Релевантные тексты:", [texts[i] for i in indices[0]])
```
Этот метод полезен для быстрого поиска релевантной информации в локальных системах.
2.2.4 Использование Weaviate для управления графами знаний
Пример: Построение базы знаний с графами и векторным поиском
Weaviate подходит для интеграции графов знаний с поиском.
```python
import weaviate
# Инициализация Weaviate
client = weaviate.Client(
url="https://your-weaviate-instance.com",
auth_client_secret="your-secret-key"
)
# Создание схемы
schema = {
"classes": [
{
"class": "CognitiveProgramming",
"properties": [
{"name": "title", "dataType": ["string"]},
{"name": "content", "dataType": ["text"]},
]
}
]
}
client.schema.create(schema)
# Добавление данных
data = {
"title": "Когнитивное программирование",
"content": "Когнитивное программирование помогает улучшить мышление."
}
client.data_object.create(data, "CognitiveProgramming")
# Поиск
query = "Что такое когнитивное программирование?"
response = client.query.get("CognitiveProgramming", ["title", "content"]).with_near_text({"concepts": [query]}).do()
print(response)
```
Weaviate полезен для управления сложными структурами данных с семантическим поиском.
2.2.5 Комбинирование Haystack и Pinecone
Пример: Масштабируемое решение для облачных систем
Комбинируйте Haystack и Pinecone для обработки больших объемов данных.
```python
from haystack.document_stores import PineconeDocumentStore
from haystack.nodes import DensePassageRetriever
from haystack.pipelines import DocumentSearchPipeline
# Настройка Pinecone
document_store = PineconeDocumentStore(api_key="your-api-key", index="cognitive-data")
retriever = DensePassageRetriever(
document_store=document_store,
query_embedding_model="facebook/dpr-question_encoder-single-nq-base",
passage_embedding_model="facebook/dpr-ctx_encoder-single-nq-base"
)
document_store.update_embeddings(retriever)
# Создание пайплайна
pipeline = DocumentSearchPipeline(retriever)
# Поиск
query = "Как когнитивное программирование улучшает работу команд?"
result = pipeline.run(query=query, params={"Retriever": {"top_k": 5}})
print(result["documents"])
```
Этот пример демонстрирует масштабируемую архитектуру для работы с большими базами знаний.