TiDB Graph Store
%pip install llama-index-llms-openai%pip install llama-index-graph-stores-tidb%pip install llama-index-embeddings-openai%pip install llama-index-llms-azure-openai# For OpenAI
import os
os.environ["OPENAI_API_KEY"] = "sk-xxxxxxx"
import loggingimport sysfrom llama_index.llms.openai import OpenAIfrom llama_index.core import Settings
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
# define LLMllm = OpenAI(temperature=0, model="gpt-3.5-turbo")Settings.llm = llmSettings.chunk_size = 512# For Azure OpenAIimport osimport openaifrom llama_index.llms.azure_openai import AzureOpenAIfrom llama_index.embeddings.openai import OpenAIEmbedding
import loggingimport sys
logging.basicConfig( stream=sys.stdout, level=logging.INFO) # logging.DEBUG for more verbose outputlogging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
openai.api_type = "azure"openai.api_base = "https://<foo-bar>.openai.azure.com"openai.api_version = "2022-12-01"os.environ["OPENAI_API_KEY"] = "<your-openai-key>"openai.api_key = os.getenv("OPENAI_API_KEY")
llm = AzureOpenAI( deployment_name="<foo-bar-deployment>", temperature=0, openai_api_version=openai.api_version, model_kwargs={ "api_key": openai.api_key, "api_base": openai.api_base, "api_type": openai.api_type, "api_version": openai.api_version, },)
# You need to deploy your own embedding model as well as your own chat completion modelembedding_llm = OpenAIEmbedding( model="text-embedding-ada-002", deployment_name="<foo-bar-deployment>", api_key=openai.api_key, api_base=openai.api_base, api_type=openai.api_type, api_version=openai.api_version,)
Settings.llm = llmSettings.embed_model = embedding_llmSettings.chunk_size = 512Using Knowledge Graph with TiDB
Section titled âUsing Knowledge Graph with TiDBâPrepare a TiDB cluster
Section titled âPrepare a TiDB clusterâ- TiDB Cloud [Recommended], a fully managed TiDB service that frees you from the complexity of database operations.
- TiUP, use `tiup playgroundâ to create a local TiDB cluster for testing.
Get TiDB connection string
Section titled âGet TiDB connection stringâFor example: mysql+pymysql://user:password@host:4000/dbname, in TiDBGraphStore we use pymysql as the db driver, so the connection string should be mysql+pymysql://....
If you are using a TiDB Cloud serverless cluster with public endpoint, it requires TLS connection, so the connection string should be like mysql+pymysql://user:password@host:4000/dbname?ssl_verify_cert=true&ssl_verify_identity=true.
Replace user, password, host, dbname with your own values.
Initialize TiDBGraphStore
Section titled âInitialize TiDBGraphStoreâfrom llama_index.graph_stores.tidb import TiDBGraphStore
graph_store = TiDBGraphStore( db_connection_string="mysql+pymysql://user:password@host:4000/dbname")Instantiate TiDB KG Indexes
Section titled âInstantiate TiDB KG Indexesâfrom llama_index.core import ( KnowledgeGraphIndex, SimpleDirectoryReader, StorageContext,)
documents = SimpleDirectoryReader( "../../../examples/data/paul_graham/").load_data()storage_context = StorageContext.from_defaults(graph_store=graph_store)
# NOTE: can take a while!index = KnowledgeGraphIndex.from_documents( documents=documents, storage_context=storage_context, max_triplets_per_chunk=2,)Querying the Knowledge Graph
Section titled âQuerying the Knowledge Graphâquery_engine = index.as_query_engine( include_text=False, response_mode="tree_summarize")response = query_engine.query( "Tell me more about Interleaf",)INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"WARNING:llama_index.core.indices.knowledge_graph.retrievers:Index was not constructed with embeddings, skipping embedding usage...INFO:httpx:HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK"from IPython.display import Markdown, display
display(Markdown(f"<b>{response}</b>"))Interleaf was a software company that developed a scripting language and was known for its software products. It was inspired by Emacs and faced challenges due to Mooreâs law. Over time, Interleafâs prominence declined.