مقدمه ای بر پایگاه های داده برداری و نحوه استفاده از هوش مصنوعی برای سئو


پایگاه داده برداری مجموعه ای از داده ها است که در آن هر قطعه داده به عنوان یک بردار (عددی) ذخیره می شود. یک بردار یک شی یا موجودیت، مانند یک تصویر، شخص، مکان و غیره را در فضای انتزاعی N-بعدی نشان می دهد.

همانطور که در فصل قبل توضیح داده شد، بردارها برای شناسایی چگونگی مرتبط بودن موجودیت ها بسیار مهم هستند و می توان از آنها برای یافتن شباهت معنایی آنها استفاده کرد. این را می توان به چندین روش برای SEO اعمال کرد – مانند گروه بندی کلمات کلیدی یا محتوای مشابه (با استفاده از kNN).

در این مقاله، ما قصد داریم چند روش برای اعمال هوش مصنوعی در سئو، از جمله یافتن محتوای مشابه معنایی برای لینک سازی داخلی، بیاموزیم. این می تواند به شما کمک کند استراتژی محتوای خود را در دوره ای که موتورهای جستجو به طور فزاینده ای به LLM ها متکی هستند، اصلاح کنید.

همچنین می توانید مقاله قبلی این مجموعه را در مورد چگونگی یافتن آدمخواری کلمات کلیدی با استفاده از تعبیه های متنی OpenAI بخوانید.

بیایید در اینجا شیرجه بزنیم تا پایه ابزار خود را بسازیم.

درک پایگاه های داده برداری

اگر هزاران مقاله دارید و می‌خواهید نزدیک‌ترین شباهت معنایی را برای پرس و جوی مورد نظر خود بیابید، نمی‌توانید جاسازی‌های برداری را برای همه آنها در پرواز ایجاد کنید تا مقایسه کنید، زیرا بسیار ناکارآمد است.

برای اینکه این اتفاق بیفتد، ما باید فقط یک بار جاسازی های برداری را تولید کنیم و آنها را در پایگاه داده ای نگه داریم که بتوانیم نزدیک ترین مقاله را جستجو کنیم و پیدا کنیم.

و این همان کاری است که پایگاه های داده برداری انجام می دهند: آنها انواع خاصی از پایگاه های داده هستند که جاسازی ها (بردارها) را ذخیره می کنند.

هنگامی که پایگاه داده را پرس و جو می کنید، بر خلاف پایگاه داده های سنتی، آنها مطابقت شباهت کسینوس را انجام می دهند و بردارهایی (در این مورد مقاله ها) نزدیک به بردار دیگری (در این مورد عبارت کلیدواژه) مورد جستجو را برمی گرداند.

در اینجا چیزی است که به نظر می رسد:

نمونه رکورد جاسازی متن در پایگاه داده برداری.نمونه رکورد جاسازی متن در پایگاه داده برداری.

در پایگاه داده برداری، می توانید بردارها را در کنار ابرداده های ذخیره شده مشاهده کنید، که به راحتی می توانیم با استفاده از یک زبان برنامه نویسی انتخابی خود، آنها را پرس و جو کنیم.

در این مقاله، ما از Pinecone به دلیل سهولت درک و استفاده از آن استفاده خواهیم کرد، اما ارائه دهندگان دیگری مانند Chroma، BigQuery یا Qdrant وجود دارند که ممکن است بخواهید آنها را بررسی کنید.

بیایید شیرجه بزنیم

1. یک پایگاه داده برداری ایجاد کنید

ابتدا یک حساب کاربری در Pinecone ثبت کنید و یک نمایه با پیکربندی “text-embedding-ada-002” با “کسینوس” به عنوان یک متریک برای اندازه گیری فاصله برداری ایجاد کنید. شما می توانید فهرست را هر چیزی نامگذاری کنید، ما نام آن را می گذاریمarticle-index-all-ada'.

ایجاد پایگاه داده برداری ایجاد پایگاه داده برداری

این رابط کاربری کمکی فقط برای کمک به شما در طول راه‌اندازی است، در صورتی که می‌خواهید جاسازی بردار هوش مصنوعی Vertex را ذخیره کنید، باید «ابعاد» را به صورت دستی در صفحه پیکربندی روی 768 تنظیم کنید تا با ابعاد پیش‌فرض مطابقت داشته باشد و می‌توانید بردارهای متنی Vertex AI را ذخیره کنید (شما می تواند مقدار ابعاد را از 1 تا 768 برای صرفه جویی در حافظه تنظیم کند).

در این مقاله نحوه استفاده از مدل‌های «text-embedding-ada-002» OpenAi و مدل‌های «text-embedding-005» Vertex AI گوگل را یاد خواهیم گرفت.

پس از ایجاد، به یک کلید API نیاز داریم تا بتوانیم با استفاده از URL میزبان پایگاه داده برداری به پایگاه داده متصل شویم.

در مرحله بعد، باید از Jupyter Notebook استفاده کنید. اگر آن را نصب نکرده‌اید، این راهنما را دنبال کنید تا آن را نصب کنید و این دستور (در زیر) را در ترمینال رایانه شخصی خود اجرا کنید تا تمام بسته‌های لازم نصب شود.

pip install openai google-cloud-aiplatform google-auth pandas pinecone-client tabulate ipython numpy

و به یاد داشته باشید که ChatGPT هنگامی که در هنگام کدنویسی با مشکلاتی روبرو می شوید بسیار مفید است!

2. مقالات خود را از CMS خود صادر کنید

در مرحله بعد، باید یک فایل صادراتی CSV از مقالات از CMS شما تهیه کنیم. اگر از وردپرس استفاده می کنید، می توانید از یک افزونه برای صادرات سفارشی استفاده کنید.

از آنجایی که هدف نهایی ما ساخت یک ابزار پیوند داخلی است، باید تصمیم بگیریم که کدام داده باید به عنوان ابرداده به پایگاه داده برداری منتقل شود. اساساً، فیلتر مبتنی بر ابرداده به عنوان یک لایه اضافی از راهنمایی بازیابی عمل می کند و با ترکیب دانش خارجی که به بهبود کیفیت بازیابی کمک می کند، آن را با چارچوب کلی RAG هماهنگ می کند.

به عنوان مثال، اگر ما در حال ویرایش مقاله ای در مورد “PPC” هستیم و می خواهیم پیوندی را به عبارت “تحقیق کلمات کلیدی” درج کنیم، می توانیم در ابزار خود “Category=PPC” را مشخص کنیم. این به ابزار امکان می‌دهد فقط مقالاتی را در دسته «PPC» جستجو کند و از پیوندهای دقیق و مرتبط با زمینه اطمینان حاصل کند، یا ممکن است بخواهیم به عبارت «جدیدترین به‌روزرسانی Google» پیوند بزنیم و با استفاده از «Type» مطابقت را فقط به مقالات خبری محدود کنیم. و در سال جاری منتشر شد.

در مورد ما، ما صادر خواهیم کرد:

  • عنوان
  • دسته بندی.
  • تایپ کنید.
  • تاریخ انتشار.
  • سال انتشار.
  • پیوند ثابت.
  • توضیحات متا.
  • محتوا.

برای کمک به بازگرداندن بهترین نتایج، فیلدهای عنوان و توضیحات متا را به هم متصل می‌کنیم زیرا بهترین نمایش مقاله هستند که می‌توانیم آن را برداریم و برای اهداف جاسازی و پیوند داخلی ایده‌آل هستیم.

استفاده از محتوای کامل مقاله برای جاسازی ممکن است دقت را کاهش دهد و ارتباط بردارها را کمرنگ کند.

این به این دلیل اتفاق می‌افتد که یک جاسازی بزرگ سعی می‌کند چندین موضوع تحت پوشش مقاله را به طور همزمان نشان دهد، که منجر به یک نمایش کمتر متمرکز و مرتبط می‌شود. استراتژی‌های تقسیم‌بندی (تقسیم مقاله بر اساس سرفصل‌های طبیعی یا بخش‌های معنادار معنایی) باید اعمال شوند، اما تمرکز این مقاله بر این‌ها نیست.

در اینجا نمونه فایل صادراتی است که می توانید دانلود کنید و برای نمونه کد ما در زیر استفاده کنید.

2. درج جاسازی های متن OpenAi در پایگاه داده برداری

با فرض اینکه از قبل یک کلید OpenAI API دارید، این کد جاسازی های برداری را از متن ایجاد می کند و آنها را در پایگاه داده برداری در Pinecone وارد می کند.

import pandas as pd
from openai import OpenAI
from pinecone import Pinecone
from IPython.display import clear_output

# Setup your OpenAI and Pinecone API keys
openai_client = OpenAI(api_key='YOUR_OPENAI_API_KEY')  # Instantiate OpenAI client
pinecone = Pinecone(api_key='YOUR_PINECON_API_KEY')

# Connect to an existing Pinecone index
index_name = "article-index-all-ada"
index = pinecone.Index(index_name)

def generate_embeddings(text):
    """
    Generates an embedding for the given text using OpenAI's API.
    Returns None if text is invalid or an error occurs.
    """
    try:
        if not text or not isinstance(text, str):
            raise ValueError("Input text must be a non-empty string.")

        result = openai_client.embeddings.create(
            input=text,
            model="text-embedding-ada-002"
        )

        clear_output(wait=True)  # Clear output for a fresh display

        if hasattr(result, 'data') and len(result.data) > 0:
            print("API Response:", result)
            return result.data[0].embedding
        else:
            raise ValueError("Invalid response from the OpenAI API. No data returned.")

    except ValueError as ve:
        print(f"ValueError: {ve}")
        return None
    except Exception as e:
        print(f"An error occurred while generating embeddings: {e}")
        return None

# Load your articles from a CSV
df = pd.read_csv('Sample Export File.csv')

# Process each article
for idx, row in df.iterrows():
    try:
        clear_output(wait=True)
        content = row["Content"]
        vector = generate_embeddings(content)

        if vector is None:
            print(f"Skipping article ID {row['ID']} due to empty or invalid embedding.")
            continue

        index.upsert(vectors=[
            (
                row['Permalink'],  # Unique ID
                vector,            # The embedding
                {
                    'title': row['Title'],
                    'category': row['Category'],
                    'type': row['Type'],
                    'publish_date': row['Publish Date'],
                    'publish_year': row['Publish Year']
                }
            )
        ])
    except Exception as e:
        clear_output(wait=True)
        print(f"Error processing article ID {row['ID']}: {str(e)}")

print("Embeddings are successfully stored in the vector database.")

شما باید یک فایل نوت بوک بسازید و آن را کپی و در آن جایگذاری کنید، سپس فایل CSV “Sample Export File.csv” را در همان پوشه آپلود کنید.

پروژه ژوپیترپروژه ژوپیتر

پس از اتمام، بر روی دکمه Run کلیک کنید و شروع به فشار دادن تمام بردارهای جاسازی متن در فهرست می کند. article-index-all-ada ما در مرحله اول ایجاد کردیم.

اجرای اسکریپتاجرای اسکریپت

شما یک متن گزارش خروجی از بردارهای جاسازی شده را خواهید دید. پس از اتمام، در پایان پیامی مبنی بر موفقیت آمیز بودن آن را نشان می دهد. حالا بروید و فهرست خود را در Pinecone بررسی کنید و خواهید دید که رکوردهای شما آنجا هستند.

3. یافتن مطابقت مقاله برای یک کلمه کلیدی

خوب حالا، بیایید سعی کنیم یک مقاله مطابق با کلمه کلیدی پیدا کنیم.

یک فایل نوت بوک جدید ایجاد کنید و این کد را کپی و پیست کنید.

from openai import OpenAI
from pinecone import Pinecone
from IPython.display import clear_output
from tabulate import tabulate  # Import tabulate for table formatting

# Setup your OpenAI and Pinecone API keys
openai_client = OpenAI(api_key='YOUR_OPENAI_API_KEY')  # Instantiate OpenAI client
pinecone = Pinecone(api_key='YOUR_OPENAI_API_KEY')

# Connect to an existing Pinecone index
index_name = "article-index-all-ada"
index = pinecone.Index(index_name)


# Function to generate embeddings using OpenAI's API
def generate_embeddings(text):
    """
    Generates an embedding for a given text using OpenAI's API.

    """
    try:
        if not text or not isinstance(text, str):
            raise ValueError("Input text must be a non-empty string.")

        result = openai_client.embeddings.create(
            input=text,
            model="text-embedding-ada-002"
        )

        # Debugging: Print the response to understand its structure
        clear_output(wait=True)
        #print("API Response:", result)

        if hasattr(result, 'data') and len(result.data) > 0:
            return result.data[0].embedding
        else:
            raise ValueError("Invalid response from the OpenAI API. No data returned.")

    except ValueError as ve:
        print(f"ValueError: {ve}")
        return None

    except Exception as e:
        print(f"An error occurred while generating embeddings: {e}")
        return None

# Function to query the Pinecone index with keywords and metadata
def match_keywords_to_index(keywords):
    """
    Matches a list of keywords to the closest article in the Pinecone index, filtering by metadata dynamically.
    """
    results = []

    for keyword_pair in keywords:
        try:
            clear_output(wait=True)
            # Extract the keyword and category from the sub-array
            keyword = keyword_pair[0]
            category = keyword_pair[1]

            # Generate embedding for the current keyword
            vector = generate_embeddings(keyword)
            if vector is None:
                print(f"Skipping keyword '{keyword}' due to embedding error.")
                continue

            # Query the Pinecone index for the closest vector with metadata filter
            query_results = index.query(
                vector=vector,  # The embedding of the keyword
                top_k=1,  # Retrieve only the closest match
                include_metadata=True,  # Include metadata in the results
                filter={"category": category}  # Filter results by metadata category dynamically
            )

            # Store the closest match
            if query_results['matches']:
                closest_match = query_results['matches'][0]
                results.append({
                    'Keyword': keyword,  # The searched keyword
                    'Category': category,  # The category used for filtering
                    'Match Score': f"{closest_match['score']:.2f}",  # Similarity score (formatted to 2 decimal places)
                    'Title': closest_match['metadata'].get('title', 'N/A'),  # Title of the article
                    'URL': closest_match['id']  # Using 'id' as the URL
                })
            else:
                results.append({
                    'Keyword': keyword,
                    'Category': category,
                    'Match Score': 'N/A',
                    'Title': 'No match found',
                    'URL': 'N/A'
                })

        except Exception as e:
            clear_output(wait=True)
            print(f"Error processing keyword '{keyword}' with category '{category}': {e}")
            results.append({
                'Keyword': keyword,
                'Category': category,
                'Match Score': 'Error',
                'Title': 'Error occurred',
                'URL': 'N/A'
            })

    return results

# Example usage: Find matches for an array of keywords and categories
keywords = [["SEO Tools", "SEO"], ["TikTok", "TikTok"], ["SEO Consultant", "SEO"]]  # Replace with your keywords and categories
matches = match_keywords_to_index(keywords)

# Display the results in a table
print(tabulate(matches, headers="keys", tablefmt="fancy_grid"))

ما در تلاش هستیم برای این کلمات کلیدی مطابقت پیدا کنیم:

  • ابزارهای سئو
  • TikTok.
  • مشاور سئو.

و این نتیجه ای است که پس از اجرای کد بدست می آوریم:

از پایگاه داده برداری، مطابقت برای عبارت کلیدی پیدا کنیداز پایگاه داده برداری، مطابقت برای عبارت کلیدی پیدا کنید

خروجی قالب‌بندی شده جدول در پایین، نزدیک‌ترین مطابقت‌های مقاله با کلمات کلیدی ما را نشان می‌دهد.

4. قرار دادن Google Vertex AI Text Embeddings در پایگاه داده برداری

حالا بیایید همین کار را انجام دهیم اما با Google Vertex AI.text-embedding-005تعبیه کردن این مدل به این دلیل قابل توجه است که توسط Google توسعه یافته است، جستجوی هوش مصنوعی Vertex را تقویت می کند، و به طور خاص برای انجام وظایف بازیابی و تطبیق پرس و جو آموزش دیده است، و آن را برای موارد استفاده ما مناسب می کند.

حتی می توانید یک ویجت جستجوی داخلی بسازید و آن را به وب سایت خود اضافه کنید.

با ورود به Google Cloud Console شروع کنید و یک پروژه ایجاد کنید. سپس از کتابخانه API Vertex AI API را پیدا کرده و آن را فعال کنید.

Vertex AI APIاسکرین شات از Google Cloud Console، دسامبر 2024

حساب صورت‌حساب خود را طوری تنظیم کنید که بتوانید از Vertex AI استفاده کنید زیرا قیمت آن 0.0002 دلار در هر 1000 کاراکتر است (و 300 دلار اعتبار برای کاربران جدید ارائه می‌کند).

هنگامی که آن را تنظیم کردید، باید به API Services > Credentials یک حساب سرویس ایجاد کنید، یک کلید ایجاد کنید و آنها را به عنوان JSON دانلود کنید.

نام فایل JSON را به config.json تغییر دهید و آن را (از طریق نماد فلش رو به بالا) در پوشه پروژه Jupyter Notebook خود آپلود کنید.

اسکرین شات از Google Cloud Console، دسامبر 2024اسکرین شات از Google Cloud Console، دسامبر 2024

در مرحله اول راه اندازی، با تنظیم دستی بعد 768، یک پایگاه داده برداری جدید به نام article-index-vertex ایجاد کنید.

پس از ایجاد می توانید این اسکریپت را اجرا کنید تا با استفاده از Google Vertex AI، جاسازی های برداری را از همان فایل نمونه ایجاد کنید. text-embedding-005 مدل (اگر متن غیر انگلیسی دارید، می توانید text-multillingual-embedding-002 را انتخاب کنید).

import os
import sys
import time
import numpy as np
import pandas as pd
from typing import List, Optional

from google.auth import load_credentials_from_file
from google.cloud import aiplatform
from google.api_core.exceptions import ServiceUnavailable

from pinecone import Pinecone
from vertexai.language_models import TextEmbeddingModel, TextEmbeddingInput

# Set up your Google Cloud credentials
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "config.json"  # Replace with your JSON key file
credentials, project_id = load_credentials_from_file(os.environ["GOOGLE_APPLICATION_CREDENTIALS"])

# Initialize Pinecone
pinecone = Pinecone(api_key='YOUR_PINECON_API_KEY')  # Replace with your Pinecone API key
index = pinecone.Index("article-index-vertex")       # Replace with your Pinecone index name

# Initialize Vertex AI
aiplatform.init(project=project_id, credentials=credentials, location="us-central1")

def generate_embeddings(
    text: str,
    task: str = "RETRIEVAL_DOCUMENT",
    model_id: str = "text-embedding-005",
    dimensions: Optional[int] = 768
) -> Optional[List[float]]:
    if not text or not text.strip():
        print("Text input is empty. Skipping.")
        return None
    
    try:
        model = TextEmbeddingModel.from_pretrained(model_id)
        input_data = TextEmbeddingInput(text, task_type=task)
        vectors = model.get_embeddings([input_data], output_dimensionality=dimensions)
        return vectors[0].values
    except ServiceUnavailable as e:
        print(f"Vertex AI service is unavailable: {e}")
        return None
    except Exception as e:
        print(f"Error generating embeddings: {e}")
        return None


# Load data from CSV
data = pd.read_csv("Sample Export File.csv")         # Replace with your CSV file path

for idx, row in data.iterrows():
    try:
        permalink = str(row["Permalink"])
        content = row["Content"]
        embedding = generate_embeddings(content)
        
        if not embedding:
            print(f"Skipping article ID {row['ID']} due to empty or failed embedding.")
            continue
        
        print(f"Embedding for {permalink}: {embedding[:5]}...")
        sys.stdout.flush()
        
        index.upsert(vectors=[
            (
                permalink,
                embedding,
                {
                    'category': row['Category'],
                    'title': row['Title'],
                    'publish_date': row['Publish Date'],
                    'type': row['Type'],
                    'publish_year': row['Publish Year']
                }
            )
        ])
        time.sleep(1)  # Optional: Sleep to avoid rate limits
    except Exception as e:
        print(f"Error processing article ID {row['ID']}: {e}")

print("All embeddings are stored in the vector database.")


در زیر گزارش های تعبیه های ایجاد شده را مشاهده خواهید کرد.

سیاهههااسکرین شات از Google Cloud Console، دسامبر 2024

4. یافتن مطابقت مقاله برای یک کلمه کلیدی با استفاده از Google Vertex AI

حالا بیایید همان تطبیق کلمه کلیدی را با Vertex AI انجام دهیم. تفاوت کوچکی وجود دارد زیرا باید از «RETRIEVAL_QUERY» در مقابل «RETRIEVAL_DOCUMENT» به عنوان یک آرگومان هنگام ایجاد جاسازی کلمات کلیدی استفاده کنید، زیرا ما در تلاش برای جستجوی مقاله (معروف به سند) هستیم که به بهترین وجه با عبارت ما مطابقت دارد.

انواع وظایف یکی از مزیت های مهمی است که Vertex AI نسبت به مدل های OpenAI دارد.

این تضمین می‌کند که جاسازی‌ها هدف کلمات کلیدی را که برای پیوند داخلی مهم هستند، به تصویر می‌کشند و ارتباط و دقت مطابقت‌های یافت شده در پایگاه داده برداری شما را بهبود می‌بخشد.

از این اسکریپت برای تطبیق کلمات کلیدی با بردارها استفاده کنید.


import os
import pandas as pd
from google.cloud import aiplatform
from google.auth import load_credentials_from_file
from google.api_core.exceptions import ServiceUnavailable
from vertexai.language_models import TextEmbeddingModel

from pinecone import Pinecone
from tabulate import tabulate  # For table formatting

# Set up your Google Cloud credentials
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "config.json"  # Replace with your JSON key file
credentials, project_id = load_credentials_from_file(os.environ["GOOGLE_APPLICATION_CREDENTIALS"])

# Initialize Pinecone client
pinecone = Pinecone(api_key='YOUR_PINECON_API_KEY')  # Add your Pinecone API key
index_name = "article-index-vertex"  # Replace with your Pinecone index name
index = pinecone.Index(index_name)

# Initialize Vertex AI
aiplatform.init(project=project_id, credentials=credentials, location="us-central1")

def generate_embeddings(
    text: str,
    model_id: str = "text-embedding-005"
) -> list:
    """
    Generates embeddings for the input text using Google Vertex AI's embedding model.
    Returns None if text is empty or an error occurs.
    """
    if not text or not text.strip():
        print("Text input is empty. Skipping.")
        return None

    try:
        model = TextEmbeddingModel.from_pretrained(model_id)
        vector = model.get_embeddings([text])  # Removed 'task_type' and 'output_dimensionality'
        return vector[0].values
    except ServiceUnavailable as e:
        print(f"Vertex AI service is unavailable: {e}")
        return None
    except Exception as e:
        print(f"Error generating embeddings: {e}")
        return None


def match_keywords_to_index(keywords):
    """
    Matches a list of keyword-category pairs to the closest articles in the Pinecone index,
    filtering by metadata if specified.
    """
    results = []

    for keyword_pair in keywords:
        keyword = keyword_pair[0]
        category = keyword_pair[1]

        try:
            keyword_vector = generate_embeddings(keyword)

            if not keyword_vector:
                print(f"No embedding generated for keyword '{keyword}' in category '{category}'.")
                results.append({
                    'Keyword': keyword,
                    'Category': category,
                    'Match Score': 'Error/Empty',
                    'Title': 'No match',
                    'URL': 'N/A'
                })
                continue

            query_results = index.query(
                vector=keyword_vector,
                top_k=1,
                include_metadata=True,
                filter={"category": category}
            )

            if query_results['matches']:
                closest_match = query_results['matches'][0]
                results.append({
                    'Keyword': keyword,
                    'Category': category,
                    'Match Score': f"{closest_match['score']:.2f}",
                    'Title': closest_match['metadata'].get('title', 'N/A'),
                    'URL': closest_match['id']
                })
            else:
                results.append({
                    'Keyword': keyword,
                    'Category': category,
                    'Match Score': 'N/A',
                    'Title': 'No match found',
                    'URL': 'N/A'
                })

        except Exception as e:
            print(f"Error processing keyword '{keyword}' with category '{category}': {e}")
            results.append({
                'Keyword': keyword,
                'Category': category,
                'Match Score': 'Error',
                'Title': 'Error occurred',
                'URL': 'N/A'
            })

    return results

# Example usage: 
keywords = [["SEO Tools", "Tools"], ["TikTok", "TikTok"], ["SEO Consultant", "SEO"]]

matches = match_keywords_to_index(keywords)

# Display the results in a table
print(tabulate(matches, headers="keys", tablefmt="fancy_grid"))


و نمرات ایجاد شده را خواهید دید:

امتیازهای تطبیق کلمه کلیدی که توسط مدل جاسازی متن Vertex AI تولید شده استامتیازهای تطبیق کلمه کلیدی که توسط مدل جاسازی متن Vertex AI تولید شده است

ارتباط مقاله نویسی خود را تست کنید

به این به عنوان یک راه ساده (گسترده) فکر کنید تا بررسی کنید نوشته شما تا چه حد از نظر معنایی مشابه کلمه کلیدی head است. یک جاسازی برداری از کلمه کلیدی سر و کل محتوای مقاله خود از طریق Vertex AI گوگل ایجاد کنید و شباهت کسینوس را محاسبه کنید.

اگر متن شما بیش از حد طولانی است، ممکن است نیاز باشد که استراتژی های تکه تکه را در نظر بگیرید.

    نمره نزدیک (شباهت کسینوس) به 1.0 (مثل 0.8 یا 0.7) به این معنی است که شما در آن موضوع بسیار نزدیک هستید. اگر امتیاز شما پایین تر باشد، ممکن است متوجه شوید که یک مقدمه بیش از حد طولانی که دارای کرک های زیادی است ممکن است باعث رقیق شدن ارتباط شود و کاهش آن به افزایش آن کمک می کند.

    اما به یاد داشته باشید، هر ویرایشی که انجام می شود باید از منظر تحریریه و تجربه کاربری نیز منطقی باشد.

    حتی می‌توانید با قرار دادن محتوای با رتبه رقیب و مشاهده نحوه انباشتگی، مقایسه سریعی انجام دهید.

    انجام این کار به شما کمک می کند تا محتوای خود را با موضوع مورد نظر با دقت بیشتری هماهنگ کنید، که ممکن است به شما در رتبه بندی بهتر کمک کند.

    در حال حاضر ابزارهایی وجود دارند که چنین وظایفی را انجام می دهند، اما یادگیری این مهارت ها به این معنی است که می توانید رویکردی سفارشی متناسب با نیازهای خود داشته باشید – و البته، آن را به صورت رایگان انجام دهید.

    آزمایش کردن برای خودتان و یادگیری این مهارت ها به شما کمک می کند تا با سئوی هوش مصنوعی پیشروی کنید و تصمیمات آگاهانه بگیرید.

    به عنوان مطالعه‌های اضافی، توصیه می‌کنم به این مقالات عالی بپردازید:

    منابع بیشتر:


    تصویر ویژه: آئوزوراستوک/Shutterstock



منبع

مطالب مرتبط