Я читал документацию весь день и, кажется, не могу обернуть голову вокруг того, как я могу создать VectorStoreIndex с Llama_index и использовать созданные встраиваемые вставки в качестве дополнительной информации для тряпичного приложения/чат -бота, которое может общаться с пользователем. Я хочу использовать llama_index, потому что у них есть несколько классных способов выполнить более продвинутые методы поиска, такие как поиск окна предложения и поиск автоматического получения (честно говоря, я не исследовал, поддерживает ли Лэнгхейн эти типы методов поиска векторов). Я хочу использовать Langchain из -за его функциональности для разработки более сложных шаблонов быстрого быстрого подсказок (аналогично я не исследовал, поддерживает ли это Llama_index). Я знаю, как оценить их с помощью отдельного файла вопросов оценки, но я хотел бы сделать такие вещи, как сравнить скорость и человечество ответов, использование токенов и т. Д.from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.memory import ChatMessageHistory
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"""You are the world's greatest... \
Use this document base to help you provide the best support possible to everyone you engage with.
""",
),
MessagesPlaceholder(variable_name="messages"),
]
)
chat = ChatOpenAI(model=llm_model, temperature=0.7)
chain = prompt | chat
chat_history = ChatMessageHistory()
while True:
user_input = input("You: ")
chat_history.add_user_message(user_input)
response = chain.invoke({"messages": chat_history.messages})
if user_input.lower() == 'exit':
break
print("AI:", response)
chat_history.add_ai_message(response)
< /code>
Llama Index Index Previeval < /li>
< /ol>
from llama_index.core.node_parser import SentenceWindowNodeParser
from llama_index.core.indices.postprocessor import MetadataReplacementPostProcessor
from llama_index.core.postprocessor import LLMRerank
class SentenceWindowUtils:
def __init__(self, documents, llm, embed_model, sentence_window_size):
self.documents = documents
self.llm = llm
self.embed_model = embed_model
self.sentence_window_size = sentence_window_size
# self.save_dir = save_dir
self.node_parser = SentenceWindowNodeParser.from_defaults(
window_size=self.sentence_window_size,
window_metadata_key="window",
original_text_metadata_key="original_text",
)
self.sentence_context = ServiceContext.from_defaults(
llm=self.llm,
embed_model=self.embed_model,
node_parser=self.node_parser,
)
def build_sentence_window_index(self, save_dir):
if not os.path.exists(save_dir):
os.makedirs(save_dir)
sentence_index = VectorStoreIndex.from_documents(
self.documents, service_context=self.sentence_context
)
sentence_index.storage_context.persist(persist_dir=save_dir)
else:
sentence_index = load_index_from_storage(
StorageContext.from_defaults(persist_dir=save_dir),
service_context=self.sentence_context,
)
return sentence_index
def get_sentence_window_query_engine(self, sentence_index, similarity_top_k=6, rerank_top_n=3):
postproc = MetadataReplacementPostProcessor(target_metadata_key="window")
rerank = LLMRerank(top_n=rerank_top_n, service_context=self.sentence_context)
sentence_window_engine = sentence_index.as_query_engine(
similarity_top_k=similarity_top_k, node_postprocessors=[postproc, rerank]
)
return sentence_window_engine
sentence_window = SentenceWindowUtils(documents=documents, llm = llm, embed_model=embed_model, sentence_window_size=1)
sentence_window_1 = sentence_window.build_sentence_window_index(save_dir='./indexes/sentence_window_index_1')
sentence_window_engine_1 = sentence_window.get_sentence_window_query_engine(sentence_window_1)
< /code>
Оба блока кода независимо будут работать. Но цель состоит в том, что, когда выполняется запрос, требует поиска существующей базы документов, я могу использовать предложение_window_engine, которое было построено. Я полагаю, я мог бы получить соответствующую информацию на основе запроса, а затем передать эту информацию в последующую подсказку для чат -бота, но я хотел бы попытаться избежать включения данных документа в подсказку.>
Подробнее здесь: https://stackoverflow.com/questions/782 ... -applicati
Интеграция индекса Llama VectorStoreIndex с агентами Langchain для тряпичных приложений ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Llama 3: получение неизвестной ошибки CUDA при точной настройке Llama 3 в викитексте
Anonymous » » в форуме Python - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Llama 3: получение неизвестной ошибки CUDA при точной настройке Llama 3 в викитексте
Anonymous » » в форуме Python - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-