Практические примеры для выбора библиотек


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"])


```


Этот пример демонстрирует масштабируемую архитектуру для работы с большими базами знаний.

Загрузка...