<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://llmstack.ai/blog</id>
    <title>LLMStack Blog</title>
    <updated>2024-01-18T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://llmstack.ai/blog"/>
    <subtitle>LLMStack Blog</subtitle>
    <icon>https://llmstack.ai/img/llmstack-icon.png</icon>
    <entry>
        <title type="html"><![CDATA[Realtime Avatars support with HeyGen]]></title>
        <id>https://llmstack.ai/blog/realtime-avatars-with-heygen</id>
        <link href="https://llmstack.ai/blog/realtime-avatars-with-heygen"/>
        <updated>2024-01-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Introducing HeyGen support in LLMStack / Promptly]]></summary>
        <content type="html"><![CDATA[<p>If you are on social media following Generative AI related news, you would have come across <a href="https://www.heygen.com/" target="_blank" rel="noopener noreferrer">HeyGen</a> and their <a href="https://www.heygen.com/article/unleashing-the-power-of-realtime-avatars" target="_blank" rel="noopener noreferrer">Realtime Avatars</a> which is a game changer in the field of video generation.</p>
<p>Today we are excited to announce that we are adding support for HeyGen's Realtime Avatars in LLMStack / Promptly. You can now use HeyGen's Realtime Avatars to generate videos with your avatar repeating the answer in realtime.</p>
<img src="https://llmstack.ai/assets/images/realtime-avatar-chat-screenshot-dbcc91a509350796a416cfc08487c858.png" alt="Realtime Avatar Chat App" style="max-width:600px;margin:0 auto;display:flex;padding-top:20px;padding-bottom:20px">
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BuS1"><p>Check out our easy to follow <a href="https://docs.trypromptly.com/guides/realtime-avatar-with-rag" target="_blank" rel="noopener noreferrer">guide</a> to build your own avatar chatbot with built-in RAG pipeline.</p></div></div>
<p>Combined with LLMStack's <a href="https://llmstack.ai/blog/retrieval-augmented-generation">RAG</a> pipeline and no-code app builder, you can now build apps with a realtime video avatar of you answering questions from your documents, all in realtime.</p>]]></content>
        <author>
            <name>Ajay Chintala</name>
            <uri>https://github.com/ajhai</uri>
        </author>
        <author>
            <name>Vignesh Aigal</name>
            <uri>https://github.com/vegito22</uri>
        </author>
        <category label="heygen" term="heygen"/>
        <category label="realtime avatars" term="realtime avatars"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Build AI Apps with Google's Gemini Pro]]></title>
        <id>https://llmstack.ai/blog/build-ai-apps-with-gemini-ai</id>
        <link href="https://llmstack.ai/blog/build-ai-apps-with-gemini-ai"/>
        <updated>2023-12-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Use Gemini Pro to build AI apps that can generate text, answer questions, summarize text, translate text, classify text and more.]]></summary>
        <content type="html"><![CDATA[<p>Google <a href="https://blog.google/technology/ai/google-gemini-ai" target="_blank" rel="noopener noreferrer">announced</a> their much awaited set of Generative AI APIs, Gemini last week. They have made available their Gemini Pro available via API with the much powerful Gemini Ultra coming later next year. At Promptly, we are excited to announce that we are making Gemini Pro available to our users via our <a href="https://llmstack.ai/" target="_blank" rel="noopener noreferrer">LLMStack</a> framework and <a href="https://trypromplty.com/" target="_blank" rel="noopener noreferrer">Promptly</a> platform.</p>]]></content>
        <author>
            <name>Ajay Chintala</name>
            <uri>https://github.com/ajhai</uri>
        </author>
        <author>
            <name>Vignesh Aigal</name>
            <uri>https://github.com/vegito22</uri>
        </author>
        <category label="gemini-pro" term="gemini-pro"/>
        <category label="google" term="google"/>
        <category label="bard" term="bard"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[100K Context Window with Anthropic]]></title>
        <id>https://llmstack.ai/blog/longer-context-chat-with-anthropic</id>
        <link href="https://llmstack.ai/blog/longer-context-chat-with-anthropic"/>
        <updated>2023-09-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Build Apps that leverage Anthropic's Long Context Language Model, Claude-2.]]></summary>
        <content type="html"><![CDATA[<p>If you have built content generation apps like blog post generators or any other app that generates or processes text, you know that the biggest challenge is handling large amounts of text. The current state of the art models are limited by the context windows making it hard to generate or handle large text. Anthropic's launch of <a href="https://www.anthropic.com/index/claude-2" target="_blank" rel="noopener noreferrer">Claude-2</a>, a 100K context window language model, changes that. At Promptly, we are excited to announce that you can now build apps that leverage Claude-2 via our <a href="https://llmstack.ai/" target="_blank" rel="noopener noreferrer">LLMStack</a> framework and <a href="https://trypromptly.com/" target="_blank" rel="noopener noreferrer">Promptly</a> platform.</p>]]></content>
        <author>
            <name>Ajay Chintala</name>
            <uri>https://github.com/ajhai</uri>
        </author>
        <author>
            <name>Vignesh Aigal</name>
            <uri>https://github.com/vegito22</uri>
        </author>
        <category label="claude-2" term="claude-2"/>
        <category label="anthropic" term="anthropic"/>
        <category label="100K context" term="100K context"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Retrieval Augmented Generation (RAG): What, Why and How?]]></title>
        <id>https://llmstack.ai/blog/retrieval-augmented-generation</id>
        <link href="https://llmstack.ai/blog/retrieval-augmented-generation"/>
        <updated>2023-09-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Retrieval Augmented Generation (RAG) is a simple yet powerful approach that can be used to improve the performance of LLMs on a wide range of tasks.]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-retrieval-augmented-generation">What is Retrieval Augmented Generation?<a href="https://llmstack.ai/blog/retrieval-augmented-generation#what-is-retrieval-augmented-generation" class="hash-link" aria-label="Direct link to What is Retrieval Augmented Generation?" title="Direct link to What is Retrieval Augmented Generation?">​</a></h2>
<p>If you have been looking up data in a vector store or some other database and passing relevant info to LLM as context when generating output, you are already doing retrieval augmented generation. Retrieval augmented generation or RAG for short is the architecture <a href="https://ai.meta.com/blog/retrieval-augmented-generation-streamlining-the-creation-of-intelligent-natural-language-processing-models/" target="_blank" rel="noopener noreferrer">popularized by Meta in 2020</a> that aims to improve the performance of LLMs by passing relevant information to the model along with the question/task details.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-rag">Why RAG?<a href="https://llmstack.ai/blog/retrieval-augmented-generation#why-rag" class="hash-link" aria-label="Direct link to Why RAG?" title="Direct link to Why RAG?">​</a></h2>
<p>LLMs are trained on large corpuses of data and can answer any questions or complete tasks using their parameterized memory. These models have a knowledge cutoff dates depending on when they were last trained on. When asked a question out of its knowledge base or about events that happened after the knowledge cutoff date, there is a high chance that the model will hallucinate. Researchers at Meta discovered that by <a href="https://ai.meta.com/blog/retrieval-augmented-generation-streamlining-the-creation-of-intelligent-natural-language-processing-models/" target="_blank" rel="noopener noreferrer">providing relevant information about the task at hand</a>, the model’s performance at completing the task improves significantly.</p>
<p>For example, if the model is being asked about an event that happened after the cutoff date, providing information about this event as context and then asking the question will help the model answer the question correctly. Because of the limited context window length of LLMs, we can only pass the most relevant knowledge for the task at hand. The quality of the data we add in the context influences the quality of the response that the model generates. There are multiple techniques that ML practitioners use in different stages of a RAG pipeline to improve LLM’s performance.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="rag-vs-fine-tuning">RAG vs Fine-tuning<a href="https://llmstack.ai/blog/retrieval-augmented-generation#rag-vs-fine-tuning" class="hash-link" aria-label="Direct link to RAG vs Fine-tuning" title="Direct link to RAG vs Fine-tuning">​</a></h3>
<p><a href="https://en.wikipedia.org/wiki/Fine-tuning_(deep_learning)" target="_blank" rel="noopener noreferrer">Fine-tuning</a> is the process of training a model on a specific task like how one can <a href="https://platform.openai.com/docs/guides/fine-tuning/create-a-fine-tuned-model" target="_blank" rel="noopener noreferrer">fine-tune GPT-3.5</a> on a question answering dataset to improve its performance on question answering for that specific dataset. Fine-tuning is a good approach if you have a dataset large enough for the task at hand and the dataset doesn't change. If the dataset is dynamic, we will need to keep retraining the model to keep up with the changes. Fine-tuning is also not a good approach if you don’t have a large dataset for the task at hand. In such cases, you can use RAG to improve the performance of LLMs. Similarly you can use RAG to improve the performance of LLMs on tasks like summarization, translation etc. that may not be possible to fine-tune on.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-it-works">How it works?<a href="https://llmstack.ai/blog/retrieval-augmented-generation#how-it-works" class="hash-link" aria-label="Direct link to How it works?" title="Direct link to How it works?">​</a></h2>
<p>RAG architecture and the pipeline involves three main stages - <code>data preparation</code>, <code>retrieval</code> and <code>generation</code>. The data preparation stage involves identifying the data sources, extracting the data from the sources, cleaning the data and storing it in a database. The retrieval stage involves retrieving relevant data from the database based on the task at hand. The generation stage involves generating the output using the retrieved data and the task at hand. The quality of the output depends on the quality of the data and the retrieval strategy. The following sections describe each stage in detail.</p>
<p><img loading="lazy" alt="RAG Pipeline" src="https://llmstack.ai/assets/images/rag-f517f1f834bdbb94a87765e0edd40ff2.png" width="762" height="463" class="img_ev3q"></p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="data-preparation">Data Preparation<a href="https://llmstack.ai/blog/retrieval-augmented-generation#data-preparation" class="hash-link" aria-label="Direct link to Data Preparation" title="Direct link to Data Preparation">​</a></h3>
<p>Based on the type of tasks LLM is going to handle, data preparation usually involves identifying the data sources, extracting the data from the sources, cleaning the data and storing it in a database. The kind of database being used to store the data and the steps involved in preparing the data can vary depending on the use case and the retrieval methods. For example, if you are using a vector store like <a href="https://weaviate.io/" target="_blank" rel="noopener noreferrer">Weaviate</a>, you will need to create embeddings for the data and store them in the vector store. If you are using a search engine like <a href="https://www.elastic.co/elasticsearch/" target="_blank" rel="noopener noreferrer">Elasticsearch</a>, you will need to index the data in the search engine. If you are using a graph database like <a href="https://neo4j.com/" target="_blank" rel="noopener noreferrer">Neo4j</a>, you will need to create nodes and edges for the data and store them in the graph database. We will discuss the different types of databases and the steps involved in preparing the data in the next section.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="vector-store">Vector Store<a href="https://llmstack.ai/blog/retrieval-augmented-generation#vector-store" class="hash-link" aria-label="Direct link to Vector Store" title="Direct link to Vector Store">​</a></h4>
<p>Vector stores are useful for storing unstructured data like text, images, audio etc. and for searching the data based on semantic similarity. An embedding model is used to generate vector embeddings for the data we store in the database. Data will need to be chunked into smaller pieces depending on the type of data, use case and the embedding model. For example, if you are storing text data, you can chunk the data into sentences or paragraphs. If the you are storing code, you can chunk the data into functions or classes. You may use smaller chunks if you choose to provide a wide range of snippets in context to the LLM. Once the data is chunked, you can generate embeddings for each chunk and store them in the vector store. When a query is made to the vector store, the query is also converted into an embedding and the vector store returns the most similar embeddings to the query.</p>
<p>Vector databases like Weaviate will take care of generating embeddings during both storage and retrieval and you can just focus on data modeling and chunking strategies.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="keyword-search">Keyword Search<a href="https://llmstack.ai/blog/retrieval-augmented-generation#keyword-search" class="hash-link" aria-label="Direct link to Keyword Search" title="Direct link to Keyword Search">​</a></h4>
<p>Keyword search is a simple approach to retrieving data where the data is indexed based on keywords and the search engine returns the documents that contain the keywords. Keyword search is useful for storing structured data like tables, documents etc. and for searching the data using keywords.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="graph-database">Graph Database<a href="https://llmstack.ai/blog/retrieval-augmented-generation#graph-database" class="hash-link" aria-label="Direct link to Graph Database" title="Direct link to Graph Database">​</a></h4>
<p>Graph databases store data in the form of nodes and edges. They are useful for storing structured data like tables, documents etc. and for searching the data using relationships between the data. For example, if you are storing data about people, you can create nodes for each person and edges between people who know each other. When a query is made to the graph database, the graph database returns the nodes that are connected to the query node. This kind of retrieval where the knowledge graphs are used is useful for tasks like question answering where the answer is a person or an entity.</p>
<h4 class="anchor anchorWithStickyNavbar_LWe7" id="search-engine">Search Engine<a href="https://llmstack.ai/blog/retrieval-augmented-generation#search-engine" class="hash-link" aria-label="Direct link to Search Engine" title="Direct link to Search Engine">​</a></h4>
<p>Data in a RAG pipeline could be retrieved from public search engines like Google, Bing etc or internal search engines like Elasticsearch, Solr etc. During retrieval stage in RAG architecture, the search engine is queried with the question/task details and the search engine returns the most relevant documents. Search engines are useful for retrieving data from the web and for searching the data with keywords. Data from a search engine can be combined with data from other databases like vector stores, graph databases etc. to improve the quality of the output.</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_BuS1"><p>Hybrid approaches that combine multiple strategies (like semantic search + keyword matches) are also possible and are known to give better results for most use cases. For example, you can use a vector store to store text data and a graph database to store structured data and combine the results from both databases to generate the output.</p></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="retrieval">Retrieval<a href="https://llmstack.ai/blog/retrieval-augmented-generation#retrieval" class="hash-link" aria-label="Direct link to Retrieval" title="Direct link to Retrieval">​</a></h3>
<p>Once the data is identified and processed to be ready for retrieval, RAG pipeline involves retrieving the relevant data based on the task (question asked by user) being handled and preparing the context to be passed to the generator. Retrieval strategy can vary depending on the use case. It usually involves passing the user's query or task to the datastore and pulling relevant results. For example, if we are building a question answering system with a vector database storing the chunks of related data, we can generate embeddings for the user's query, do a similarity search for the embeddings in the vector database and retrieve the most similar chunks (some vector databases takes care of generating embeddings during retrieval). Similarly depending on the use case, we can do a hybrid search on the same vector store or with multiple databases and combine the results to pass as context to the generator.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id="generation">Generation<a href="https://llmstack.ai/blog/retrieval-augmented-generation#generation" class="hash-link" aria-label="Direct link to Generation" title="Direct link to Generation">​</a></h3>
<p>Once the relevant data is retrieved, it is passed to the generator (LLM) along with the user's query or task. The LLM generates the output using the retrieved data and the user's query or task. The quality of the output depends on the quality of the data and the retrieval strategy. The instructions for generating the output will also greatly impact the quality of the output.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="techniques-to-improve-rag-performance-in-production">Techniques to improve RAG performance in production<a href="https://llmstack.ai/blog/retrieval-augmented-generation#techniques-to-improve-rag-performance-in-production" class="hash-link" aria-label="Direct link to Techniques to improve RAG performance in production" title="Direct link to Techniques to improve RAG performance in production">​</a></h2>
<p>Following are some techniques across the different stages of RAG pipeline that can be used to improve the performance of RAG in production.</p>
<ol>
<li>
<p><strong>Hybrid search:</strong> Combining semantic search with keyword search to retrieve relevant data from a vector store is known to give better results for most use cases.</p>
</li>
<li>
<p><strong>Summaries:</strong> It may be beneficial to summarize the chunks and storing the summaries in the vector store instead of raw chunks. For example, if your data involves a lot of filler words, it is a good idea to summarize the chunks to remove the filler words and store the summaries in the vector store. This will improve the quality of generation since we are removing the noise from the data as well as help with reducing the number of tokens in the input.</p>
</li>
<li>
<p><strong>Overlapping chunks:</strong> When splitting the data into chunks for semantic retrieval, there could be instances with semantic search where we may pick a chunk which may have related and useful context in the neighboring chunks. Passing this chunk to the LLM for generation without surrounding context may result in poor quality output. To avoid this, we can overlap the chunks and pass the overlapping chunks to the LLM for generation. For example, if we are splitting the data into chunks of 100 tokens, we can overlap the chunks by 50 tokens. This will ensure that we are passing the surrounding context to the LLM for generation.</p>
</li>
<li>
<p><strong>Fine-tuned embedding models:</strong> Using off-the-shelf embedding models like BERT, ada etc to generate embedding for the data chunks may work for most use-cases. But if you are working on a specific domain, these models may not represent the domain well in the vector space resulting in poor quality retrieval. In such cases, we can fine-tune and use an embedding model on the data from the domain to improve the quality of retrieval.</p>
</li>
<li>
<p><strong>Metadata:</strong> Providing metadata like source etc., about the chunks being passed in the context will help the LLM understand the context better resulting in better output generation.</p>
</li>
<li>
<p><strong>Re-ranking:</strong> When using semantic search, it is possible that the top-k results are similar to each other. In such cases, we should consider re-ranking the results based on other factors like metadata, keyword matches etc. to cover a wide range of snippets in context to the LLM.</p>
</li>
<li>
<p><strong>Lost in the middle:</strong> It has been observed that LLMs do not place equal weight to all the tokens in the input. Tokens in the middle appear to have been given less weight than the tokens at the beginning and end of the input. This is known as the <a href="https://arxiv.org/abs/2307.03172" target="_blank" rel="noopener noreferrer">lost in the middle</a> problem. To avoid this, we can re-order the context snippets so we place the most important snippets at the beginning and end of the input and the less important snippets in the middle.</p>
</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="rag-in-llmstack">RAG in LLMStack<a href="https://llmstack.ai/blog/retrieval-augmented-generation#rag-in-llmstack" class="hash-link" aria-label="Direct link to RAG in LLMStack" title="Direct link to RAG in LLMStack">​</a></h2>
<p>RAG pipeline comes out of the box with LLMStack. When you create a datasource and upload data, LLMStack takes care of chunking the data, generating embeddings and storing them in the vector store. When you create an app that uses <a href="https://docs.trypromptly.com/processors/promptly#text-chat" target="_blank" rel="noopener noreferrer">Text-Chat</a> processor, LLMStack takes care of retrieving the relevant data from the vector store and passing it to the LLM for generation. Templates like <code>Website Chatbot</code>, <code>AI Augmented Search</code>, <code>Brand Copy Checker</code> etc., are all using RAG pipeline in LLMStack.</p>
<p><img loading="lazy" alt="RAG in LLMStack" src="https://llmstack.ai/assets/images/text-chat-processor-b1fc862aa0aa92cb430eb592d17e1dbe.png" width="1826" height="1370" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="https://llmstack.ai/blog/retrieval-augmented-generation#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h2>
<p>RAG has proven to be a simple yet powerful approach that can be used to improve the performance of LLMs on a wide range of tasks. With researchers and practitioners working on improving the different stages of RAG pipeline, we can expect to see more use cases of RAG in production in the near future. If you are interested in leveraging RAG in your work, you can try out LLMStack at <a href="https://github.com/trypromptly/LLMStack" target="_blank" rel="noopener noreferrer">https://github.com/trypromptly/LLMStack</a> or with our cloud offering, <a href="https://trypromptly.com/" target="_blank" rel="noopener noreferrer">Promptly</a>.</p>]]></content>
        <author>
            <name>Ajay Chintala</name>
            <uri>https://github.com/ajhai</uri>
        </author>
        <category label="rag" term="rag"/>
        <category label="retrieval" term="retrieval"/>
        <category label="generation" term="generation"/>
        <category label="production" term="production"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Open Source LLMs with LocalAI]]></title>
        <id>https://llmstack.ai/blog/run-os-llms-on-llmstack-with-localai</id>
        <link href="https://llmstack.ai/blog/run-os-llms-on-llmstack-with-localai"/>
        <updated>2023-08-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Build AI Apps with Open Source LLMs like Llama2 using LocalAI and LLMStack.]]></summary>
        <content type="html"><![CDATA[<p>Now build AI Apps using Open Source LLMs like Llama2 on LLMStack using <a href="https://localai.io/" target="_blank" rel="noopener noreferrer">LocalAI</a></p>
<p>LLMStack now includes <a href="https://github.com/go-skynet/LocalAI/" target="_blank" rel="noopener noreferrer">LocalAI</a> support which means you can now run Open Source LLMs like Llama2, stable diffusion etc., locally and build apps on top of them using LLMStack.</p>
<p><img loading="lazy" alt="LocalAI" src="https://llmstack.ai/assets/images/localai-example-48182d41544290c8c9c1227e2d5fa2fd.png" width="1092" height="454" class="img_ev3q"></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-localai">What is LocalAI?<a href="https://llmstack.ai/blog/run-os-llms-on-llmstack-with-localai#what-is-localai" class="hash-link" aria-label="Direct link to What is LocalAI?" title="Direct link to What is LocalAI?">​</a></h2>
<p>LocalAI is a drop-in replacement REST API that’s compatible with OpenAI API specifications for local inferencing. Read more about LocalAI <a href="https://localai.io/" target="_blank" rel="noopener noreferrer">here</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-use-localai-with-llmstack">How to use LocalAI with LLMStack?<a href="https://llmstack.ai/blog/run-os-llms-on-llmstack-with-localai#how-to-use-localai-with-llmstack" class="hash-link" aria-label="Direct link to How to use LocalAI with LLMStack?" title="Direct link to How to use LocalAI with LLMStack?">​</a></h2>
<p>To use LocalAI with LLMStack, you need to have LocalAI running on your machine. You can follow the deployment instructions <a href="https://localai.io/" target="_blank" rel="noopener noreferrer">here</a> to install LocalAI on your machine. Once LocalAI is up and running, you can configure LLMStack to use LocalAI by going to <code>Settings</code> and filling in the <code>LocalAI Base URL</code> and <code>LocalAI API Key</code> if any. Once done, click <code>Update</code> to save the configuration.</p>
<p><img loading="lazy" alt="LocalAI Configuration" src="https://llmstack.ai/assets/images/localai-settings-f79193ac161c2e700686312ed4039026.png" width="1342" height="486" class="img_ev3q"></p>
<p>Once LocalAI is configured, you can use it in your apps by selecting <code>LocalAI</code> as the provider for processor and selecting the processor and model you want to use.</p>
<p>Are there any other open source LLM frameworks that you would like to see on LLMStack? Let us know in our github discussions <a href="https://github.com/trypromptly/LLMStack/discussions" target="_blank" rel="noopener noreferrer">here</a>.</p>]]></content>
        <author>
            <name>Ajay Chintala</name>
            <uri>https://github.com/ajhai</uri>
        </author>
        <author>
            <name>Vignesh Aigal</name>
            <uri>https://github.com/vegito22</uri>
        </author>
        <category label="llmstack" term="llmstack"/>
        <category label="localai" term="localai"/>
        <category label="llama2" term="llama2"/>
        <category label="open-source" term="open-source"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Introducing LLMStack]]></title>
        <id>https://llmstack.ai/blog/introducing-llmstack</id>
        <link href="https://llmstack.ai/blog/introducing-llmstack"/>
        <updated>2023-08-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[LLMStack is a low-code AI platform that allows you to build powerful AI applications using pre-trained language models.]]></summary>
        <content type="html"><![CDATA[<p>Excited to introduce LLMStack, an open source, low-code platform to build powerful AI experiences using LLMs.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="overview">Overview<a href="https://llmstack.ai/blog/introducing-llmstack#overview" class="hash-link" aria-label="Direct link to Overview" title="Direct link to Overview">​</a></h2>
<p>LLMStack is an end to end platform that allows you to build powerful AI applications using LLMs. You can build AI applications that can generate text, answer questions, summarize text, translate text, generate media and more. You can also chain multiple LLMs together to build complex AI applications. You can connect your data to LLMStack and use it to augment the language models. You can also connect your business processes to LLMStack and use it to automate your workflows.</p>
<p>LLMStack comes with everything you need to build AI applications. It comes with a no-code builder that allows you to build AI applications without writing any code. It comes with a vector database that allows you to store your data and use it to augment the language models. Using its powerful API, you can integrate your AI applications with your existing products and services.</p>
<div style="width:100%;height:100%"></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="features">Features<a href="https://llmstack.ai/blog/introducing-llmstack#features" class="hash-link" aria-label="Direct link to Features" title="Direct link to Features">​</a></h2>
<ul>
<li>
<p><strong>🔗 Chain multiple models:</strong> LLMStack allows you to chain multiple LLMs together to build complex generative AI applications.</p>
</li>
<li>
<p><strong>📊 Use generative AI on your Data:</strong> Import your data into your accounts and use it in AI chains. LLMStack allows importing various types (<em>CSV, TXT, PDF, DOCX, PPTX etc.,</em>) of data from a variety of sources (<em>gdrive, notion, websites, direct uploads etc.,</em>). Platform will take care of preprocessing and vectorization of your data and store it in the vector database that is provided out of the box.</p>
</li>
<li>
<p><strong>🛠️ No-code builder:</strong> LLMStack comes with a no-code builder that allows you to build AI chains without any coding experience. You can chain multiple LLMs together and connect them to your data and business processes.</p>
</li>
<li>
<p><strong>☁️ Deploy to the cloud or on-premise:</strong> LLMStack can be deployed to the cloud or on-premise. You can deploy it to your own infrastructure or use our cloud offering at <a href="https://trypromptly.com/" target="_blank" rel="noopener noreferrer">Promptly</a>.</p>
</li>
<li>
<p><strong>🚀 API access:</strong> Apps or chatbots built with LLMStack can be accessed via HTTP API. You can also trigger your AI chains from <strong><em>Slack</em></strong> or <strong><em>Discord</em></strong>.</p>
</li>
<li>
<p><strong>🏢 Multi-tenant:</strong> LLMStack is multi-tenant. You can create multiple organizations and add users to them. Users can only access the data and AI chains that belong to their organization.</p>
</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-can-you-build-with-llmstack">What can you build with LLMStack?<a href="https://llmstack.ai/blog/introducing-llmstack#what-can-you-build-with-llmstack" class="hash-link" aria-label="Direct link to What can you build with LLMStack?" title="Direct link to What can you build with LLMStack?">​</a></h2>
<p>Using LLMStack you can build a variety of generative AI applications, chatbots and agents. Here are some examples:</p>
<ul>
<li>
<p><strong>Chatbots:</strong> Build chatbots that can answer questions, generate text, summarize text, translate text, classify text and more.</p>
</li>
<li>
<p><strong>AI Assistants:</strong> Build AI assistants that can automate your workflows and business processes.</p>
</li>
<li>
<p><strong>AI Agents:</strong> Build AI agents that can help you with your day to day tasks.</p>
</li>
<li>
<p><strong>AI Applications:</strong> Build AI applications that can generate text, answer questions, summarize text, translate text, classify text and more.</p>
</li>
</ul>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id="getting-started">Getting Started<a href="https://llmstack.ai/blog/introducing-llmstack#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started">​</a></h2>
<p>Head over to our github repository to get started with LLMStack: <a href="https://github.com/trypromptly/LLMStack" target="_blank" rel="noopener noreferrer">https://github.com/trypromptly/LLMStack</a> or check out our cloud offering at <a href="https://trypromptly.com/" target="_blank" rel="noopener noreferrer">Promptly</a>.</p>
<p>We are excited to see what you build with LLMStack. If you have any questions or feedback, please leave a message in repository's discussions at <a href="https://github.com/trypromptly/LLMStack/discussions" target="_blank" rel="noopener noreferrer">https://github.com/trypromptly/LLMStack/discussions</a>.</p>]]></content>
        <author>
            <name>Ajay Chintala</name>
            <uri>https://github.com/ajhai</uri>
        </author>
        <category label="llmstack" term="llmstack"/>
        <category label="introduction" term="introduction"/>
    </entry>
</feed>