An integration package connecting Compressa and LangChain
Project description
langchain-compressa
Этот пакет содержит интеграцию LangChain и Compressa.
Установка
pip install langchain-compressa
И вам следует настроить учетные данные, установив следующую переменную окружения:
COMPRESSA_API_KEY
Embeddings
CompressaEmbeddings класс предоставляет embeddings из Compressa.
from langchain_compressa import CompressaEmbeddings
embeddings = CompressaEmbeddings()
embeddings.embed_query("В чем смысл жизни?")
Chat model
ChatCompressa класс предоставляет чат модели из Compressa.
from langchain_openai import ChatCompressa
llm = ChatCompressa(
temperature=0,
# api_key="...", # если вы предпочитаете передавать ключ непосредственно в конструктор вместо использования переменных окружения
)
messages = [
(
"system",
"Ты полезный помощник, который переводит с русского на болгарский. Переведи предложение пользователя.",
),
("human", "Я люблю программирование."),
]
ai_msg = llm.invoke(messages)
print(ai_msg)
print(ai_msg.content)
CompressaRerank
CompressaRerank класс предоставляет реранк модели из Compressa.
from langchain_core.documents import Document
from langchain_compressa.reranks import CompressaRerank
documents = [
Document(
page_content="""Карсон-Сити — столица американского штата Невада.
По данным переписи населения США 2010 года, население Карсон-Сити составляло 55 274 человека.""",
metadata={"source": "https://пример.ru/1"}
),
Document(
page_content="""Содружество Северных Марианских островов — группа островов в Тихом океане,
которые являются политическим разделением, контролируемым Соединенными Штатами.
Столица — Сайпан.""",
metadata={"source": "https://пример.ru/2"}
),
Document(
page_content="""Шарлотта-Амалия — столица и крупнейший город Виргинских островов США.
В нем проживает около 20 000 человек. Город находится на острове Сент-Томас.""",
metadata={"source": "https://пример.ru/3"}
),
Document(
page_content="""Вашингтон, округ Колумбия (также известный как просто Вашингтон или
округ Колумбия, и официально как округ Колумбия) — столица Соединенных Штатов.
Это федеральный округ. На территории находятся резиденция президента США и многие
крупные государственные правительственные учреждения. Это делает его политическим центром
Соединенных Штатов Америки.""",
metadata={"source": "https://пример.ru/4"}
),
Document(
page_content="""Смертная казнь существовала в Соединенных Штатах еще до того,
как Соединенные Штаты стали страной. По состоянию на 2017 год смертная казнь разрешена
в 30 из 50 штатов. Федеральное правительство (включая вооруженные силы США) также
применяет смертную казнь.""",
metadata={"source": "https://пример.ru/5"}
)
]
query = "Какая столица у Соединенных Штатов Америки?"
reranker = CompressaRerank()
compress_res = reranker.compress_documents(query=query, documents=documents)
Пример RAG
import os
from langchain_compressa import CompressaEmbeddings, ChatCompressa, CompressaRerank
from langchain_core.documents import Document
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain.chains import create_retrieval_chain
from langchain.retrievers.contextual_compression import ContextualCompressionRetriever
from langchain_core.prompts import ChatPromptTemplate
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import WebBaseLoader
from langchain_chroma import Chroma
COMPRESSA_API_KEY = os.getenv('COMPRESSA_API_KEY')
compressa_embedding = CompressaEmbeddings(api_key=COMPRESSA_API_KEY)
llm = ChatCompressa(api_key=COMPRESSA_API_KEY)
loader = WebBaseLoader("https://ru.wikipedia.org/wiki/Архитектура_фон_Неймана")
docs = loader.load()
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500, chunk_overlap=100, add_start_index=True
)
all_splits = text_splitter.split_documents(docs)
vectorstore = Chroma.from_documents(documents=all_splits, embedding=compressa_embedding)
retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 5})
compressor = CompressaRerank(api_key=COMPRESSA_API_KEY)
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor, base_retriever=retriever
)
system_template = f"""Ты помощник по вопросам-ответам. Используй следующую контекстную информацию,
чтобы ответить на вопрос. Если в контексте нет ответа, ответь 'Не знаю ответа на вопрос'.
Используй максимум три предложения и будь точным но кратким."""
qa_prompt = ChatPromptTemplate.from_messages([
("system", system_template),
("human", """Контекстная информация:
{context}
Вопрос: {input}
"""),
])
question_answer_chain = create_stuff_documents_chain(llm, qa_prompt)
rag_chain = create_retrieval_chain(compression_retriever, question_answer_chain)
answ = rag_chain.invoke({"input": "Какое узкое место у архитектуры фон Неймана?"})
print(answ["answer"])
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langchain_compressa-0.1.4.tar.gz.
File metadata
- Download URL: langchain_compressa-0.1.4.tar.gz
- Upload date:
- Size: 10.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1aa8e99d3c6c5d92ce23b56507df5f7a7cbcceb3cbede1c0a51ed12f7f6d32c2
|
|
| MD5 |
451531cc26316e011686b6c52bf24d42
|
|
| BLAKE2b-256 |
23a47fcacce50409208c1224db29c18c3a3a89dfb28ae371c47fc1efed1e6cca
|
File details
Details for the file langchain_compressa-0.1.4-py3-none-any.whl.
File metadata
- Download URL: langchain_compressa-0.1.4-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7498a03de656f03d490a97d4c9229292a0ce9d47ced9f36756de7b111afe176
|
|
| MD5 |
7de515ce2fcb641cbd8acccbf474c9c1
|
|
| BLAKE2b-256 |
9937f9204173674d1dfd2d2225d394115750685222c5477eee5f9a214fd0324c
|