🐷
LMQL v0.0.6.1で日本語が通るようになった
LMQLのtokenizern内で出力が文字化けするのを回避するように修正したので自分で試してみます。
データソースとして以前に構築したnoteの記事をLlamaIndex経由で参照してクエリしてみます。
LlamaIndex 0.6.0はかなりの破壊的変更が入っているのでご注意ください(たとえばよくサンプルコードに出てくるGPTSimpleVectorIndexが削除されてる)。
#!/usr/bin/env python
# coding: utf-8
import asyncio
from llama_index import GPTVectorStoreIndex, SimpleDirectoryReader, ServiceContext
import lmql
documents = SimpleDirectoryReader('./data/note/').load_data()
service_context = ServiceContext.from_defaults(chunk_size_limit=512)
index = GPTVectorStoreIndex.from_documents(documents, service_context=service_context)
similarity_top_k = 2
@lmql.query
async def index_query(question: str):
'''
sample(temperature=0.2, max_len=2048, openai_chunksize=2048)
"""あなたは、ユーザーの質問に対する回答をサポートするQAボットです。"""
query_engine = index.as_query_engine(response_mode="no_text", similarity_top_k=similarity_top_k)
response = query_engine.query(question)
information = "\n\n".join([s.node.get_text() for s in response.source_nodes])
"Question: {question}\n"
"\nRelevant Information: {information}\n"
"Your response based on relevant information:[RESPONSE]"
from
"openai/gpt-3.5-turbo"
'''
if __name__ == "__main__":
result = asyncio.run(index_query("noteのオススメな使い方は?"))
print(result[0].variables)
INFO:llama_index.token_counter.token_counter:> [build_index_from_nodes] Total LLM token usage: 0 tokens
INFO:llama_index.token_counter.token_counter:> [build_index_from_nodes] Total embedding token usage: 48519 tokens
INFO:llama_index.token_counter.token_counter:> [retrieve] Total LLM token usage: 0 tokens
INFO:llama_index.token_counter.token_counter:> [retrieve] Total embedding token usage: 14 tokens
{'RESPONSE': ' noteは、自分の考えやコンセプトを書き残すためのプラットフォームです。オススメの使い方としては、自分の興味や専門分野に関する記事を書いたり、日々の思考や気づきを書き留めたりすることが挙げられます。また、他のユーザーの記事を読んでコメントを残すことで、交流や学びの場としても活用できます。オススメの本としては、「学力の経済学」と「ファスト&スロー」があります。'}
Discussion